Есть ли способ получить неузловый результат от MSXML XPath оценщика? - PullRequest
2 голосов
/ 29 января 2009

Я понимаю, что имя методов selectNode / selectSingleNode фактически предполагает, что они предназначены для возврата узла, однако, возможно, существует какой-либо другой способ или параметр, позволяющий оценщику XPath возвращать данные других типов (которые также являются действительными Результаты XPath)

oDocument.selectSingleNode("'1'"); 

выдает ошибку «Выражение не возвращает узел DOM»

Я хочу запросить oDocument.selectSingleNode ("concat (@day, '-', @month, '-', @year") и получить результат (это возможно с помощью стандартного API DOM XPath). Действительно, я могу запрашивать узлы, а затем обходить их с помощью DOM, однако это будет неэффективным способом.

Ответы [ 2 ]

2 голосов
/ 29 января 2009

selectSingleNode() и selectNodes() выбирают узлы, идентифицированные выражением XPath.

Их возвращаемые значения имеют тип IXMLDOMNode и IXMLDOMNodeList соответственно. Больше ничего нельзя вернуть.

Выражения, которые не возвращают набор узлов (но в остальном являются действительными выражениями XPath), приведут к ошибке.

1 голос
/ 29 января 2009

API, предоставляемый msxml, не допускает этого .

Вы можете посмотреть исходный код XPath Visualizer , чтобы увидеть, как такие выражения XPath успешно оцениваются . Проще говоря, когда исключение происходит при попытке оценить выражение XPath, и сообщение этого исключения в точности соответствует сообщению, содержащемуся в вашем (оригинальном) вопросе, тогда динамически создается специальное преобразование XSLT, и оно возвращает результат XPath. выражение с использованием <xsl:value-of>

...