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 を最初の属性にし、2 番目の属性で 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 に答える