1

我有一个大的 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具有相同属性但具有不同值(例如<RELATIONSHIP xlink:from="fromValue08" xlink:to="toValue08" />)的节点时,我总是会Duplicate Attribute出错。这将是我正在解析的 xpath 的示例:

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

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

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

4

2 回答 2

1

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

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

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

于 2012-10-18T13:13:47.150 回答
0

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

于 2012-10-18T12:40:05.920 回答