【发布时间】:2016-06-06 20:40:21
【问题描述】:
我正在尝试比较两个 xelements (),如下所示:
XElement 父项 =
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Item Title="070_Page" Modified="2016-01-06T18:08:36" CP1="-6185, Intro" CP2="-6182, Article Body" CP3="-14507, Article Body1" CP4="-14430, Article Body2" CP5="-14530, Article Body3" CP6="-7064, Article Body4" CP7="-14529, Article Body5" CP8="-7065, Article Body6" CPCount="8" />
<tcm:Item Title="080_Page" Modified="2015-04-23T13:27:59" CP1="-6302, Intro" CP2="-6193, Article Body" CPCount="2" />
<tcm:Item Title="Release Notes" Modified="2016-01-07T21:25:43" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
</tcm:ListItems>
XElement 子项 =
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Item Title="070_Page" Modified="2016-06-06T19:36:35" CP1="-6185, Intro" CP2="-6147, Media & Delivery Intro" CP3="-6182, Article Body" CP4="-14507, Article Body1" CP5="-14430, Article Body2" CP6="-14530, Article Body3" CP7="-7064, Article Body4" CP8="-14529, Article Body5" CP9="-7065, Article Body6" CPCount="9" />
<tcm:Item Title="080_Page" Modified="2016-02-09T21:03:32" CP1="-6302, Intro" CP2="-6193, Article Body" CPCount="2" />
<tcm:Item Title="Release Notes" Modified="2016-02-09T21:03:33" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
<tcm:Item Title="Release Notes1" Modified="2016-03-09T22:00:13" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
</tcm:ListItems>
我希望我的结果是(第一个有不同的 CPCount,第二个是 childItems 中的新元素):
XElement 差异 =
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Item Title="070_Page" Modified="2016-06-06T19:36:35" CP1="-6185, Intro" CP2="-6147, Media & Delivery Intro" CP3="-6182, Article Body" CP4="-14507, Article Body1" CP5="-14430, Article Body2" CP6="-14530, Article Body3" CP7="-7064, Article Body4" CP8="-14529, Article Body5" CP9="-7065, Article Body6" CPCount="9" />
<tcm:Item Title="Release Notes1" Modified="2016-03-09T22:00:13" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
</tcm:ListItems>
我试过XMLDiff API,但没有运气。我可以遍历并获得结果,但有时列表可能很大(3000+)。有没有最好的处理方法?
【问题讨论】:
-
所以您想使用 Title 属性作为键和其他属性 - 如果存在则比较,如果不匹配或缺少属性则显示在结果列表中?您应该可以使用
Dictionary<string, Dictionary<string, string>>,其中第一个键是元素标题,第二个键是要比较的属性名称。构建其中两个,左右,然后比较。 -
谢谢Neolisk...是的,标题将是主要过滤器..其他属性可能不同..但我的结果应该基于:1)CPCount 2)如果有新元素在父项中不存在的子项中,字典是正确的方法吗?会有不好的表现... linq 有没有像 deepequals 这样的东西? msdn.microsoft.com/en-us/library/…
-
当我回到家时我会研究这个 - 会尝试为你制作一个工作代码示例。
-
编辑了我的 XML... 谢谢 Neolisk