Как XPath обрабатывает пространства имен XML?
Если я использую
/IntuitResponse/QueryResponse/Bill/Id
чтобы проанализировать XML-документ ниже, я получаю 0 узлов назад.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3"
time="2016-10-14T10:48:39.109-07:00">
<QueryResponse startPosition="1" maxResults="79" totalCount="79">
<Bill domain="QBO" sparse="false">
<Id>=1</Id>
</Bill>
</QueryResponse>
</IntuitResponse>
Однако я не указываю, что пространство имен в XPath (т.е. http://schema.intuit.com/finance/v3
не является префиксом каждого токена пути). Как XPath может узнать, какой Id
я хочу, если я не говорю это явно? Я предполагаю, что в этом случае (поскольку существует только одно пространство имен) XPath может уйти, полностью игнорируя xmlns
. Но если есть несколько пространств имен, все может стать уродливым.