Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 看似不一致的Chrome-XPath结果_Javascript_Google Chrome_Namespaces_Webkit_Xpath - Fatal编程技术网

Javascript 看似不一致的Chrome-XPath结果

Javascript 看似不一致的Chrome-XPath结果,javascript,google-chrome,namespaces,webkit,xpath,Javascript,Google Chrome,Namespaces,Webkit,Xpath,我有一个非常简单的XML文档,是从一个较大的父级检索到的。请参阅下面的“accountxml”: <accounts xmlns=​"https:​/​/​domain.com/path">​ <customerid>​sometext</customerid>​ <login>​sometext​</login>​ <companyname>​sometext​</companyname>

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

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

<login>sometext</login>​
返回:

null

这是一个如此简单的查询,我很惊讶它竟然中断了。但我可以100%的复制它。我是做错了什么,还是这是Chrome中的一个bug?

感谢Gael鼓励我重新审视大写字母

关键是文档取自较大的父级。尽管上面的小文档是按照JS控制台所看到的方式打印的,所有元素名称都是小写的,但它所取的较大的父文档使用initialLowerCase作为元素名称

即使我在查询较小的片段,我仍然需要使用父片段的大小写,而不是子片段的大小写。

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

我不确定这是一个Chrome bug还是一个预期行为

你100%确定这不是一个与案件相关的问题吗?就像
customerid
customerid
?盖尔:你说得对。上面的小文档完全按照JS控制台看到的方式打印。但是它所取的较大的父元素使用initialLowerCase作为元素名。即使我在查询较小的片段,我仍然需要使用父片段的大小写,而不是子片段的大小写。想在下面给出一个答案吗?我不是在寻求声誉,我真的很高兴我能解决你的问题,因为我对xpath一无所知,并且胡乱猜测我的答案:D@Gael:很公平。我已经花费在下面的原因和解决方案上。再次感谢。这取决于您定义
accountxml
的方式:如果您使用XML解析器构建它,那么它就是一个bug,因为它应该保留QName,因为它是XPath引擎所期望的。如果不是这样做的话,这是一个糟糕的设计选择。@Alejandro:最初的完整树XMLDocument是用domParser构建的。然后运行XPath查询。第一个XPathResult被序列化为一个字符串,然后从该字符串进行解析,以创建一个新的XMLDocument,其中只包含有问题的分支。
null
accountxml.evaluate('//ns2:customerId',accountxml,myNS,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;