当存在名称空间时,无法使用XPath读取nodeValue

时间:2012-04-25 09:19:48

标签: javascript xml xpath

<?xml version="1.0" encoding="UTF-8" ?>
<BO xmlns="http://hg.com/bo" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://hg.com/bo http://hg.com/bo.xsd">
<b>Harsh</b>
</BO>

我正在尝试使用XPath读取标记内的严酷

当命名空间不存在时,我可以使用这个javascript行

var path = "/BO/b";
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);

我应该在路径中做出哪些更改,以便我能够获取节点b?

1 个答案:

答案 0 :(得分:0)

为了在(默认)命名空间中定义的XML内容上使用XPath表达式,您需要指定命名空间前缀映射。您需要一些方法在XPath表达式中指定您正在寻找“http://hg.com/bo”命名空间中的所有“b”元素。

在您的情况下,您可以使用“ex”前缀并将此前缀映射到“http://hg.com/bo”名称空间URI。这将导致以下XPath表达式返回“http://hg.com/bo”命名空间中声明的所有“b”元素:'// ex:/ BO / b'。