在比较xml节点时忽略子顺序

时间:2015-10-30 04:23:05

标签: c# xml linq-to-xml

我有两个xml文档,例如:

aDoc.xml:
 <update id="1293">
    <abc>.....</abc>
    <xyz>....</xyz>
    <components>
      <component name="C1">
        <files source="s1" target="t1">
          <file>**file2**</file>
          <file>**file1**</file>
        </files>
      </component>
    </components>
  </update>



bDoc.xml:
 <update id="1293">
   <abc>.....</abc>
    <xyz>....</xyz>
    <components>
      <component name="C1">
        <files source="s1" target="t1">
          <file>**file1**</file>
          <file>**file2**</file>
        </files>
      </component>
   </components>
  </update>

我到目前为止所尝试的是:

var DiffInA = aDoc.Descendants("component").Cast<XNode>().Except(bDoc.Descendants("component").Cast<XNode>(), new XNodeEqualityComparer());

上面的行返回如下输出:

 <component name="C1">
        <files source="s1" target="t1">
          <file>file2</file>
          <file>file1</file>
        </files>

(aDoc中存在但不属于bDoc的节点)

但是如果你看两个xml文件,组件C1只相同,那么标签出现的顺序就不同了。

有没有办法用linq to xml实现这个目标。(我不想使用XmlDiff或其他Api&#39;)

0 个答案:

没有答案