【问题标题】:Duplicate error when adding XAttribute to XElement将 XAttribute 添加到 XElement 时出现重复错误
【发布时间】:2012-10-18 21:17:09
【问题描述】:

我有一个很大的 xml 文件,我正在解析一个 xpath 以在其中插入值。这是我在其中插入一些值的 xml 文件的一部分:

<SERVICES>
    <RELATIONSHIPS>
         <RELATIONSHIP xlink:from="fromValue01" xlink:to="toValue01" />
         <RELATIONSHIP xlink:from="fromValue02" xlink:to="toValue02" />
         <RELATIONSHIP xlink:from="fromValue03" xlink:to="toValue03" />
         <RELATIONSHIP xlink:from="fromValue04" xlink:to="toValue04" />
         <RELATIONSHIP xlink:from="fromValue05" xlink:to="toValue05" />
         <RELATIONSHIP xlink:from="fromValue06" xlink:to="toValue06" />
         <RELATIONSHIP xlink:from="fromValue07" xlink:to="toValue07" />
    </RELATIONSHIPS>
<SERVICES>

现在,当我想添加更多具有相同属性但具有不同值的 RELATIONSHIP 节点时(例如 &lt;RELATIONSHIP xlink:from="fromValue08" xlink:to="toValue08" /&gt;),我总是会收到 Duplicate Attribute 错误。这将是我正在解析的 xpath 的示例:

/SERVICES/RELATIONSHIPS/RELATIONSHIP[@xlink:from="fromValue08" and @xlink:to="toValue08"]

解析器的代码太大,无法粘贴到这里,我确信它可以正常工作,因为它可以很好地插入所有节点,只是这里的这部分给我带来了一些麻烦。 我还用 Altova 检查了 xpath,它工作正常。

我的问题是:是否可以在 XML 中添加具有相同属性但具有不同值的节点?如果是,为什么 Visual Studio 总是抛出这个错误?

【问题讨论】:

    标签: c# xml xpath


    【解决方案1】:

    我好像明白了。解析器上的问题不如 xpath 上的问题大。我错过了 xpath 上的索引。所以我的解析器选择了第一个RELATIONSHIP,它确实有重复的XAttributes。我只是在属性条件之前添加了索引。所以最后它看起来像:

    /SERVICES/RELATIONSHIPS/RELATIONSHIP[8][@xlink:from="fromValue08" and @xlink:to="toValue08"]
    

    我不知道这是否是正确的 xpath 语法,以及索引是否应该出现在条件之后,但对于我的解析器来说它正在工作。

    【讨论】:

      【解决方案2】:

      肯定与您的 XPath 请求有关,RELATIONSHIPS 可能缺少索引

      【讨论】:

      • 可能是@xlink:from 而不是@xlink:fromValue
      • 这也只是真正庞大的 xpath 的一部分。 xpath 在 Altova XML Spy 中经过测试并且工作正常。无论如何,我在问题中解决了它,很抱歉造成误解
      • 可能 VS 在使用 XML 命名空间时遇到了一些麻烦,请尝试将其删除并重新测试?
      • 它确实添加了没有 xml 命名空间前缀的 xpath,但我得到了什么?我需要在我的属性中有那个前缀。
      • XNamespace 在使用XML 时确实是个问题,看看stackoverflow.com/questions/9160418/…
      猜你喜欢
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2018-05-25
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多