0

在 DB 中,我将 XML 字符串存储在列中。下面是我的 XML 结构:

<?xml version="1.0"?>
-<ProductAttributes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Attribute Required="false" ID="2" Name="Color">
<Value ID="18">Light Pink</Value>
</Attribute>
-<Attribute Required="false" ID="1" Name="Size">
<Value ID="9">XL</Value>
</Attribute>
</ProductAttributes>

另一个 XML 是:

<?xml version="1.0"?>
-<ProductAttributes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Attribute Required="false" ID="1" Name="Size">
<Value ID="1">S</Value>
</Attribute>
-<Attribute Required="false" ID="2" Name="Color">
<Value ID="4">Red</Value>
</Attribute>
-<Attribute Required="false" ID="3" Name="Weight">
<Value ID="6">10gr</Value>
</Attribute>
</ProductAttributes>

笔记

  1. 可以有n个 xml 字符串,每个 xml 字符串可以有m个标签

  2. 属性节点可以按不同的顺序排列,例如在第一个属性中,Id=1 可以是第一个属性,在第二个属性中,Id=1 可以是最后一个。

要求不是比较这 n 个 XML 字符串并查找是否有任何字符串具有完全重复的属性(此比较将考虑值,因为顺序可能不同)。

请指导和帮助我。

4

3 回答 3

2

不要比较 XML 字符串。将它们用作 XML 解析器的输入,将它们转换为 XML 树,然后在树中搜索匹配的元素并比较它们的属性列表。

于 2012-06-30T02:27:32.833 回答
1

您可能想尝试可从此处下载的 XML Diff and Patch GUI Tool。我以前用过它,它工作正常。

于 2012-06-30T04:46:13.733 回答
1

您可以迭代 xml doc A 的所有节点,对于每个节点,在 xml doc B 中查找其 xpath。如果未找到任何路径或找到路径但值不同,则文档不“相同”。

然后,您必须对 B 中的所有节点执行相同的操作,检查 A 中的 xpath,以确保没有“B 中但 A 中没有”

一旦未找到 xpath 或值不匹配,通过退出为“不等于”进行优化。

于 2012-06-30T15:22:18.480 回答