1

私は現在、2 つの xml を比較する際に問題に取り組んでいます。オリジナルと相違点の参照です。問題は、異なる子の順序と比較するためにワイルドカードを適用しようとするときです。さらに、これらの子はノード内の属性の数が異なる可能性があるため、比較はさらに困難です。

.NET 用の XMLUnit & XMLDiff ライブラリを使用してソリューションを実装しようとしましたが、成功しませんでした。

using System;
using Org.XmlUnit.Builder;
using Org.XmlUnit.Diff;
using System.IO;

static void Main(string[] args)
    {
        string orgFilePath = @"C:\Temp\original.xml";
        string refFilePath = @"C:\Temp\reference.xml";

        StreamReader orgStreamReader = new StreamReader(orgFilePath);
        StreamReader refStreamReader = new StreamReader(refFilePath);

        String orgFile = XDocument.Load(orgStreamReader).ToString();
        String refFile = XDocument.Load(refStreamReader).ToString();

        var diff = DiffBuilder
            .Compare(Input.FromString(orgFile))
            .WithTest(Input.FromString(refFile))
            .CheckForSimilar()
            .Build();

        foreach (var d in )
        {
            Console.WriteLine(d.Comparison);
            Console.WriteLine();
        }
        Console.WriteLine(diff.Differences);

        Console.ReadLine();
    }

参照ファイル:

<deviceOrders>
    <deviceOrder>
      <operation>New</operation>
      <moduleId>*</moduleId>
      <net>TST</net>
      <sort>VT</sort>
      <moduleNr>220</moduleNr>
      <deviceNr>0</deviceNr>
    </deviceOrder>
    <deviceOrder>
      <operation>New</operation>
      <moduleId>*</moduleId>
      <net>79ST</net>
      <sort>UP</sort>
      <deviceNr>0</deviceNr>
    </deviceOrder>
</deviceOrders>

組織ファイル:

<deviceOrders>
    <deviceOrder>
      <operation>New</operation>
      <moduleId>1235</moduleId>
      <net>79ST</net>
      <sort>UP</sort>
      <deviceNr>0</deviceNr>
    </deviceOrder>
    <deviceOrder>
      <operation>New</operation>
      <moduleId>1234</moduleId>
      <net>TST</net>
      <sort>VT</sort>
      <moduleNr>220</moduleNr>
      <deviceNr>0</deviceNr>
    </deviceOrder>
</deviceOrders>

私はまだ解決策を見つけていないので、助けてください。

4

2 に答える 2