比较两个XML字符串

时间:2014-03-07 12:01:36

标签: c# asp.net

给出以下示例xml字符串:

<bookstore xmlns="http://www.contoso.com/books">
  <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.90</price>
  </book>
  <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>15.11</price>
  </book>
</bookstore>

如果我改变它:

<bookstore xmlns="http://www.contoso.com/books">
  <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
    <title>CHANGE HERE1</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>10.90</price>
  </book>
  <book genre="novel" publicationdate="2050-11-17" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>15.11</price>
  </book>
</bookstore>

我想获得包含我的更改的字典,即:

=&GT;旧价值,新价值

  • book1 =&gt;标题:本杰明富兰克林的自传|改变HERE1
  • book1 =&gt;价格:8.90 | 10.90
  • book2 =&gt; publicationdate:1967-11-17 | 2050年11月17日

我该怎么办?除了字符串比较之外的任何想法? 我尝试使用XML Diff,但它返回一个XML文档,没有关于节点名称的信息。

1 个答案:

答案 0 :(得分:1)

高级概念是这样的:

  1. 创建一个实现INotifyPropertyChanged interface
  2. 的Book类
  3. 将您的xml文件解析为IEnumerble您的案例字典&lt;整型,书籍及GT; (int代表id)
  4. 当书籍属性发生变化时,您可以简单地访问哪个书籍更改了哪个书籍,并根据已更改的书籍执行任何操作,例如添加到新的dicitonary
  5. 很多很好的例子,包括。 MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx