要素が重複している XML 内の場所を見つける必要があります。たとえば、XML では次のようになります。
<menu>
<juice sugar="yes" fresh="no">
<apple/>
<carrot/>
</juice>
<juice sugar="no" fresh="no">
<apple/>
<carrot/>
</juice>
<juice sugar="no" fresh="no">
<carrot/>
<apple/>
</juice>
<juice>
<carrot kind="village" />
<orange/>
<juice/>
<juice>
<carrot kind="village" />
<orange/>
<carrot kind="village" />
</juice>
</menu>
XML に共通の親を持つ等しい要素が含まれている場合、例外をスローする必要があります。ただし、属性も重要であり、等しい必要があります。
子孫の順序は重要ではありません。つまり、私の例では、例外がスローされる必要があります
<juice sugar="no" fresh="no">
<apple/>
<carrot/>
</juice>
<juice sugar="no" fresh="no">
<carrot/>
<apple/>
</juice>
「ジュース」はすべての属性が等しく、2 番目の「ジュース」の子は最初の子の置換子であるためです。
例外が発生する別の場所は次のとおりです。
<juice>
<carrot kind="village" />
<orange/>
<carrot kind="village" />
</juice>
「ジュース」には同じ「ニンジン」が 2 回含まれているためです。
この問題のヒントに感謝します。XSLT を使用する必要がありますか? それとも、C# で XML を逆シリアル化する方がよいのでしょうか?