我需要在 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>
因为“果汁”的所有属性都相等,并且第二个“果汁”的子代是第一个的置换子代。
另一个应该发生异常的地方是:
  <juice>
    <carrot kind="village" />
    <orange/>
    <carrot kind="village" />
  </juice>
因为“果汁”两次包含相同的“胡萝卜”。
对于这个问题的任何提示,我将不胜感激。我应该使用 XSLT 吗?或者在 C# 中反序列化我的 XML 可能更好?