繁体   English   中英

如何比较两个XML文档?

[英]How can I compare 2 XML Documents?

我有两个文档都相似,但是我需要找到一种优雅而有效的方式来比较两个文件并返回Doc#1中不存在Doc#2中的值。

XML文件#1

      <ids>
        <id>1</id>
        <id>2</id>
        <id>5</id>
        <id>6</id>
        <id>7</id>
        <id>8</id>
        <id>9</id>
       </ids>
    </ids>

XML文件#2

  <ids>
    <id>1</id>
    <id>2</id>
    <id>7</id>
    <id>8</id>
    <id>9</id>
  </ids>

我在考虑使用linq是否可以在id字段上加入这两个文档。 有没有更好的办法? 我希望返回ID 5和6。

这是一个我知道有效的示例,我仅使用小文件(File1.xml有20个项目,File2.xml有8个项目)进行了尝试。

XDocument file1Doc = XDocument.Load("File1.xml");
XDocument file2Doc = XDocument.Load("File2.xml");

IEnumerable<string> file1Elements = from d in file1Doc.Descendants("Id")
                                    select d.Value;

IEnumerable<string> file2Elements = from d in file2Doc.Descendants("Id")
                                    select d.Value;

var difference = file1Elements.Except(file2Elements);

另外,可能更符合您的需求的是:

XDocument file1Doc = XDocument.Load("File1.xml");
XDocument file2Doc = XDocument.Load("File2.xml");

IEnumerable<string> file2Elements = from d in file2Doc.Descendants("Id")
                                    select d.Value;

var x = from include in file1Doc.Descendants("Id")
        where file2Elements.Contains(include.Value) != true
        select include;

您还可以在MSDN上查看101 LINQ示例获得帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM