我有一个非常简单的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中的错误?
答案 0 :(得分:2)
感谢盖尔鼓励我再次关注资本化。
关键是文件取自较大的父母。虽然上面的小文档是在JS控制台看到的情况下打印的完全 - 所有元素名称都是小写的,但是从中获取的较大父文件使用initialLowerCase作为元素名称。
即使我正在查询较小的片段,我仍然需要使用父母的外壳而不是孩子的外壳。
accountxml.evaluate('//ns2:customerId',accountxml,myNS,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;
我不确定这是Chrome错误还是预期的行为。