На первый взгляд противоречивые результаты Chrome XPath - PullRequest
1 голос
/ 14 февраля 2011

У меня есть очень простой XML-документ, который я получил от большего родителя.См. «Accountxml» ниже:

<accounts xmlns=​"https:​/​/​domain.com/path">​
    <customerid>​sometext</customerid>​
    <login>​sometext​</login>​
    <companyname>​sometext​</companyname>​
    <canmanageclients>​sometext</canmanageclients>​
</accounts>​

Достаточно просто - всего один URL-адрес пространства имен (URL-адрес, называемый ns2 на карте имен myNS ниже).Запрос логина:

accountxml.evaluate('//ns2:login',accountxml,myNS,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;

возвращает ОК:

<login>sometext</login>​

Но:

accountxml.evaluate('//ns2:customerid',accountxml,myNS,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;

Возвращает:

null

Это такойпростой запрос, я удивлен, что он ломается.Но я могу воспроизвести это 100% времени.Я что-то не так делаю, или это ошибка в Chrome?

1 Ответ

2 голосов
/ 14 февраля 2011

Спасибо Гаэлю за то, что он посоветовал мне снова взглянуть на заглавные буквы.

Ключ к этому - документ взят от более крупного родителя.Хотя указанный выше небольшой документ печатается точно в том виде, в котором его видит консоль JS - со всеми именами элементов в нижнем регистре, для более крупного родительского элемента, в котором он взят, используется initialLowerCase для имен элементов.

Несмотря на то, что я запрашиваю меньший фрагмент, мне все равно нужно использовать регистр родительского элемента, а не регистр дочернего элемента.

accountxml.evaluate('//ns2:customerId',accountxml,myNS,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;

IЯ не уверен, что это ошибка Chrome или ожидаемое поведение.

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