如何设置属性/将子项添加到节点列表中的节点

时间:2014-08-12 04:41:24

标签: xml xpath set

我需要添加子节点并为节点设置属性,它是节点系列中的第二个实例。 但我似乎无法找到“SelectSingleNode”的方法,以便我可以添加子项和设置属性。 这是我到目前为止所创造的:

<Markers ObjectID="22" ClassID="bee50706-b524-416c-9f03-b596ce5f6866" Version="2">
    <Markers Version="1" ObjectRef="24">
        <Marker Version="1" Index="0">
            <Second ObjectRef="23"/>
            <First>5009872344</First>
        </Marker>
        <Marker/>
    </Markers>
    <Node Version="1"/>
</Markers>

我无法继续下去,因为我无法设置节点“Marker”的第二个实例的属性。我尝试的所有内容都设置了“标记”的第一个实例并替换了它已有的内容。

这是我最终需要的:

<Markers ObjectID="22" ClassID="bee50706-b524-416c-9f03-b596ce5f6866" Version="2">
   <Markers Version="1">
      <Marker Version="1" Index="0">
         <Second ObjectRef="23"/>
         <First>5009119315200</First>
      </Marker>
      <Marker Version="1" Index="1">
         <Second ObjectRef="24"/>
         <First>419274305049600</First>
      </Marker>
   </Markers>
   <Node Version="1"/>
</Markers>

//Markers[@ObjectID='22']/Markers/Marker的节点列表在列表中生成2个项目。 我试图弄清楚如何从这个列表中引用单个节点,但我不知道如何。

有没有办法识别没有属性的节点??? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

如果您的要求确实是在同一个父级中获得第二个<Marker>,则可以使用xpath索引来实现这一目标:

//Markers[@ObjectID='22']/Markers/Marker[2]

另一种可能的方法,就像你问的那样,让<Marker>节点没有任何属性:

//Markers[@ObjectID='22']/Markers/Marker[not(@*)]