2012-10-22 22 views
0

我想SelectSingleNode索引#因为我有几个具有相同路径的元素。如何格式化SelectSingleNode xPath索引#?

xDoc.DocumentElement.SelectSingleNode(xPath).InnerText = xValue.ToString(); 

当XPath是以下字符串:

“/参数[@标记= 'tool_od'] /值/ ValueSeries/值[指数= 1] /值”

或 “/参数[@标记= 'tool_od'] /值/ ValueSeries/值[1] /值”

或 “/参数[@标记= 'tool_od'] /值/ ValueSeries/值[@索引= 1] /值“

所有这些选项都给我一个错误: ”对象引用未设置为对象的实例。

这是xml的一部分: 我希望能够通过选择单节点访问每个孩子。

<ValueSeries> 
      <Value> 
       <value>25</value> 
      </Value> 
      <Value> 
       <value>999012.0</value> 
      </Value> 
      <Value> 
       <value>999012.0</value> 
      </Value> 
</ValueSeries> 

如果我将删除索引部分路径将正常工作,但它只会访问第一个元素,而不是其他人。

回答

0

很难确定究竟是什么问题,而无法看到您的输入xml。

请注意,您不需要使用xDoc.DocumentElement,因为您的xpath无论如何都指的是根节点(/),因此您可以只执行xDoc.SelectSingleNode(...

如果您正在寻找“ValueSeries”的第一个“Value”元素,那么您的第二个xpath看起来是正确的(值是否包含值?),但这取决于xml的外观。

“对象引用”错误是由于SelectSingleNode返回null(因为未找到xpath)的事实,并且您试图设置属性InnerText。

+0

我已经添加了xml。 –

0

我的错误是由于使用索引“0”,第一个索引是1.

+0

这个问题在你的问题中并不清楚,你正在使用[1](并且是xpath是基于1的) – Marcus