Xpath, получение значения узла - PullRequest
0 голосов
/ 02 октября 2009

Я получаю это возвращаемое значение от 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", пакет);

Обновление

Пока у меня есть это: results.FirstChild.ChildNodes [2] .Attributes ["ows_ID"]. Значение

Но я не уверен, насколько он надежен, может кто-нибудь улучшить его?

Ответы [ 5 ]

2 голосов
/ 02 октября 2009

Я не знаю, обязательно ли это улучшение , но оно может быть более читабельным, хотя и более многословным:

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

Вероятно, есть еще что-то, что вы разместили во фрагменте, поэтому этот запрос XPath может нуждаться в исправлении при использовании с фактическим результатом XML.

Функция local-name () позволяет игнорировать пространства имен, которые могут быть как благом, так и проклятием. :)

0 голосов
/ 02 октября 2009

Возможно, вам нужно убедиться, что префикс пространства имен z объявлен правильно - это зависит от реализации. Вот как вы это делаете в реализации XPath на Java .

Затем, чтобы выбрать значение атрибута ows_ID, вам нужно перейти к самому элементу, а затем использовать @ows_ID для получения значения.

0 голосов
/ 02 октября 2009

Конкретные вызовы xpath зависят от используемой библиотеки (например, реализация libxml xpath). Но общий оператор xpath будет:

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

Это выберет все узлы z: строки с атрибутом ows_ID со значением 9. Вы можете изменить этот запрос, чтобы он соответствовал всем узлам z: строки или только узлам с определенным атрибутом.

Подробнее см. Здесь: Синтаксис W3Schools XPath

0 голосов
/ 02 октября 2009
<xsl:value-of select="Result/b:row/@ows_ID"/>

или

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

В зависимости от того, какое значение вы хотели

0 голосов
/ 02 октября 2009

При запуске с правами root:

/ Результат / г: строка / @ ows_ID

также вы можете улучшить поиск, если существует несколько Результат:

/ Результат [@ ID = '1, New'] / г: строка / @ ows_ID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...