看似不一致的Chrome XPath结果

时间:2011-02-14 18:13:57

标签: javascript google-chrome namespaces webkit xpath

我有一个非常简单的XML文档,我从较大的父文件中检索过。请参阅下面的“accountxml”:

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

足够简单 - 只需一个命名空间URL(下面的myNS命名空间映射中称为ns2的URL)。查询登录:

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

返回OK:

<login>sometext</login>​

但是:

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

返回:

null

这是一个如此简单的查询我很惊讶它打破了。但我可以百分之百地重现它。我做错了什么,或者这是Chrome中的错误?

1 个答案:

答案 0 :(得分:2)

感谢盖尔鼓励我再次关注资本化。

关键是文件取自较大的父母。虽然上面的小文档是在JS控制台看到的情况下打印的完全 - 所有元素名称都是小写的,但是从中获取的较大父文件使用initialLowerCase作为元素名称。

即使我正在查询较小的片段,我仍然需要使用父母的外壳而不是孩子的外壳。

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

我不确定这是Chrome错误还是预期的行为。