同じXMLSchemaに基づく2つのXMLを比較しています。XML内のすべての要素にはIDがあります(idは順序について何も言いません-最も古いxmlElementが最も低いIDを持ちますなど)。私の目標は、2つのXMLS間のある種の調整を行うことです。
非常に簡単な例を挙げます。2つのxmlがあるとします。最初のものは次のようになります。
<EleType>
<Ele id="1"/>
<Name id="2"/>
<Description id="100"/>
<UnknownOrderEle1 id="3"/>
</EleType>
そしてこのような2番目のもの:
<EleType>
<Ele id="1"/>
<Name id="2"/>
<Description id="100"/>
<UnknownOrderEle2 id="4"/>
</EleType>
私の結果はIDのマッピングになるはずです。最初は1:1、次に2:2、100:100でうまくいきます。この時点で、名前が異なる2つのxml要素に出くわしました。私はそれらが一致しない可能性があることを知っているので、2つの可能な解決策は3:*(ここで* =一致しない記号)を取り、次に*:4を取るか、:4を取り、次に3を取ります。ただし、スキーマでは、UnknownOrderEle2(id = 4)がUnknownOrderEle1(id = 3)の前に来る必要があると示されているため、正しい解決策は1つだけです。
そこで、XmlSchemaクラス内で、要素の順序について何かを教えてくれるものを探しましXmlSchemaInfo
たXmlSchemaElement
。私が見つけた唯一の2つの可能性は、時間がかかりすぎるか汚れているため、私にとって実際の解決策ではありません。LineNumber
1つは、と(おそらく汚れLinePosition
ている)内を比較することです。XmlSchemaObject
もう1つは、2つのxmlからxmlを作成し、それを検証することです。検証例外がスローされた場合、選択した順序が間違っていたことがわかります(間違いなく時間がかかります)。
誰かがより良い解決策を知っているなら、私はどんな助けも受けてうれしいです。