Xpath,检索节点值

时间:2009-10-02 08:28:34

标签: c# xml xpath

我从Sharepoint获得此返回值...我刚刚包含了xml片段的第一部分...

<Result ID=\"1,New\" xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">
<ErrorCode>0x00000000</ErrorCode><ID /><z:row ows_ID=\"9\"

它填充XmlNode节点对象。

如何使用xPath获取ows_id的值?

我的代码到目前为止......

XmlNode results = list.UpdateListItems(“MySharePointList”,batch);

更新

到目前为止我有这个:results.FirstChild.ChildNodes [2] .Attributes [“ows_ID”]。值

但我不确定它有多可靠,有人可以改进吗?

5 个答案:

答案 0 :(得分:2)

我不知道它是否必然是改进,但它可能更具可读性,但更详细:

/*[local-name() = 'Result']/*[local-name() = 'row']/@ows_ID

您发布的片段可能更多,因此当针对实际的xml结果使用时,此XPath查询可能需要修复。

函数local-name()允许您忽略名称空间,这可以是恩赐和诅咒。 :)

答案 1 :(得分:0)

从root开始时:

/结果/ Z:行/ @ ows_ID

如果存在多个结果,您也可以改进搜索结果:

/结果[@ ID = '1,新'] / Z:行/ @ ows_ID

答案 2 :(得分:0)

特定的xpath调用取决于您使用的库(例如libxml xpath实现)。 但通用的xpath语句将是:

"//z:row[@ows_ID='9']"

这将选择属性ows_ID值为9的所有z:row节点。 您可以修改此查询以匹配所有z:row节点或仅匹配具有特定属性的节点。

有关详情,请点击此处:W3Schools XPath syntax

答案 3 :(得分:0)

<xsl:value-of select="Result/b:row/@ows_ID"/>

<xsl:value-of select="Result/b:row[@ows_ID = '9']"/>

取决于您想要的值

答案 4 :(得分:0)

您可能需要确保正确声明z名称空间前缀 - 这取决于实现。 Here's how you do it in Java's XPath implementation

然后要选择ows_ID属性的值,您需要导航到元素本身,然后使用@ows_ID获取值。