博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[xpath] text()和string()区别
阅读量:6892 次
发布时间:2019-06-27

本文共 1151 字,大约阅读时间需要 3 分钟。

质区别

text()是一个node test,而string()是一个函数,data()是一个函数且可以保留数据类型。此外,还有点号(.)表示当前节点。

使用要点

XML例子: 

<book><author>Tom John</author></book>

用例 举例
text() book/author/text()
string() book/author/string()
data() book/author/data()
. book/author/.

特殊用例

XML例子:

Tom
John cat
20
0.8

 

text()

经常在XPath表达式的最后看到text(),它仅仅返回所指元素的文本内容。

let $x := book/author/text()return $x

返回的结果是Tom cat,其中的John不属于author直接的节点内容。

string()

string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。

let $x := book/author/string()return $x

返回的内容是”Tom John cat”

data()

大多数时候,data()函数和string()函数通用,而且不建议经常使用data()函数,有数据表明,该函数会影响XPath的性能。

let $x := book/pricing/string()return $x

返回的是200.8

let $x := book/pricing/data()return $x

这样将返回分开的20和0.8,他们的类型并不是字符串而是xs:anyAtomicType,于是就可以使用数学函数做一定操作。

let $x := book/pricing/price/data()let $y := book/pricing/discount/data()return $x*$y

 

比如上面这个例子,就只能使用data(),不能使用text()或 string(),因为XPath不支持字符串做数学运算。

总结

text()不是函数,XML结构的细微变化,可能会使得结果与预期不符,应该尽量少用,data()作为特殊用途的函数,可能会出现性能问题,如无特殊需要尽量不用,string()函数可以满足大部分的需求。

 

转载于:https://www.cnblogs.com/P3nguin/p/7595877.html

你可能感兴趣的文章
MySQL内存使用-线程独享
查看>>
JDBC连接MySQL数据库及演示样例
查看>>
【WP8.1开发】基于应用的联系人存储
查看>>
AI新时代-教你使用python+Opencv完成人脸解锁(附源码)
查看>>
MongoDB ( 三 )高级_状态返回和安全
查看>>
基于 Netty 的可插拔业务通信协议的实现「1」协议描述及基本消息对象设计
查看>>
NodeJS介绍以及开发微信公众号Example
查看>>
新时代前端的自我修养—2017 D2主题分享记录及我的思考
查看>>
java并发编程学习14--CompletableFuture(一)
查看>>
ES6语法之Symbol
查看>>
取周期性字符串中的其中一个
查看>>
d3.js ----面积图表
查看>>
Zepto这样操作元素属性
查看>>
30-seconds-code——Object
查看>>
pyspark底层浅析
查看>>
【设计模式】组合模式之神经网络应用
查看>>
Jenkins系统搭建及常见操作
查看>>
SQL Server 2012自动异地备份
查看>>
Ubuntu 下 SVN 多版本库的搭建
查看>>
CSS选择器
查看>>