javascript基础从小白到高手系列一千零九:单个节点结果

XPathResult.FIRST_ORDERED_NODE_TYPE 结果类型返回匹配的第一个节点,可以通过结果的
singleNodeValue 属性获取。比如:
let result = xmldom.evaluate(“employee/name”, xmldom.documentElement, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null);
if (result !== null) {
console.log(result.singleNodeValue.tagName);
}
与其他查询一样,如果没有匹配的节点,evaluate()返回null。如果有一个匹配的节点,则要使
用singleNodeValue 属性取得该节点。这对XPathResult.FIRST_ORDERED_NODE_TYPE 也一样。
简单类型结果
使用布尔值、数值和字符串XPathResult 类型,可以根据XPath 获取简单、非节点数据类型。这
些结果类型返回的值需要分别使用booleanValue、numberValue 和stringValue 属性获取。对于
布尔值类型,如果至少有一个节点匹配XPath 表达式,booleanValue 就是true;否则,booleanValue
为false。比如:
let result = xmldom.evaluate(“employee/name”, xmldom.documentElement, null,
XPathResult.BOOLEAN_TYPE, null);
console.log(result.booleanValue);
在这个例子中,如果有任何节点匹配"employee/name",booleanValue 属性就等于true。
对于数值类型,XPath 表达式必须使用返回数值的XPath 函数,如count()可以计算匹配给定模式
的节点数。比如:
let result = xmldom.evaluate(“count(employee/name)”, xmldom.documentElement,
null, XPathResult.NUMBER_TYPE, null);
console.log(result.numberValue);
以上代码会输出匹配"employee/name"的节点数量(比如2)。如果在这里没有指定XPath 函数,
numberValue 就等于NaN。
对于字符串类型,evaluate()方法查找匹配XPath 表达式的第一个节点,然后返回其第一个子节
点的值,前提是第一个子节点是文本节点。如果不是,就返回空字符串。比如:
let result = xmldom.evaluate(“employee/name”, xmldom.documentElement, null,
XPathResult.STRING_TYPE, null);
console.log(result.stringValue);
这个例子输出了与"employee/name"匹配的第一个元素中第一个文本节点包含的文本字符串。
默认类型结果
所有XPath 表达式都会自动映射到特定类型的结果。设置特定结果类型会限制表达式的输出。不过,
可以使用XPathResult.ANY_TYPE 类型让求值自动返回默认类型结果。通常,默认类型结果是布尔值、
数值、字符串或无序节点迭代器。要确定返回的结果类型,可以访问求值结果的resultType 属性,如
下例所示:
let result = xmldom.evaluate(“employee/name”, xmldom.documentElement, null,
XPathResult.ANY_TYPE, null);
if (result !== null) {
switch(result.resultType) {
case XPathResult.STRING_TYPE:
// 处理字符串类型
break;
case XPathResult.NUMBER_TYPE:
// 处理数值类型
break;
case XPathResult.BOOLEAN_TYPE:
// 处理布尔值类型
break;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
// 处理无序节点迭代器类型
break;
default:
// 处理其他可能的结果类型
}
}
使用XPathResult.ANY_TYPE 可以让使用XPath 变得更自然,但在返回结果后则需要增加额外的
判断和处理。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值