0

0

XPath的boolean()函数如何转换值为布尔型?

小老鼠

小老鼠

发布时间:2025-08-17 19:53:01

|

169人浏览过

|

来源于php中文网

原创

boolean()函数将XPath值按规则转为布尔值:数字中0和NaN为false,其余为true;空字符串为false,非空为true;节点集非空为true;布尔值不变。可用于条件判断,如//item[@price and boolean(@price)]选price非空节点。与string()、number()不同,boolean()仅判断真假。注意空字符串与缺失属性区别、数字字符串格式及NaN问题,避免陷阱。

xpath的boolean()函数如何转换值为布尔型?

XPath的

boolean()
函数用于将任何XPath值转换为布尔值。 它的转换规则相对直接,但理解这些规则对于编写精确的XPath表达式至关重要。

XPath中的

boolean()
函数将参数转换为布尔值,转换规则如下:

  • 数字: 0和NaN转换为
    false
    ,其他任何数字(包括正无穷和负无穷)转换为
    true
  • 字符串: 空字符串""转换为
    false
    ,任何非空字符串转换为
    true
  • 节点集: 如果节点集为空,则转换为
    false
    ;如果节点集包含至少一个节点,则转换为
    true
  • 布尔值:
    true
    保持为
    true
    false
    保持为
    false

如何利用boolean()函数进行条件判断?

boolean()
函数在XPath中主要用于条件判断。 比如,你可能想检查一个节点是否存在,或者一个字符串是否为空。 结合
if
表达式或者在谓词中使用,可以实现更复杂的逻辑。

举个例子,假设你有以下XML:


  
  
  

你可以使用以下XPath表达式来选择所有

price
属性非空的
item
节点:

//item[@price and boolean(@price)]

这个表达式首先检查

@price
属性是否存在,然后使用
boolean(@price)
确保属性值不是空字符串。

再比如,要选择所有

price
大于0的item:

//item[number(@price) > 0]

注意这里使用了

number()
函数,先把
@price
转换成数字,再进行比较。 如果
@price
不能转换成数字,
number(@price)
会返回
NaN
,而
NaN > 0
的结果是
false

松果AI写作
松果AI写作

专业全能的高效AI写作工具

下载

boolean()函数与string()、number()函数的区别

XPath还提供了

string()
number()
函数用于类型转换。
string()
将参数转换为字符串,
number()
将参数转换为数字。 理解它们与
boolean()
的区别至关重要。

  • string()
    : 将数字、布尔值和节点集转换为字符串。 对于节点集,它返回第一个节点的字符串值。
  • number()
    : 将字符串、布尔值和节点集转换为数字。 如果字符串不能转换为数字,则返回
    NaN
    。 对于节点集,它尝试将第一个节点的字符串值转换为数字。
  • boolean()
    : 根据上述规则将任何XPath值转换为布尔值。

这三个函数服务于不同的目的,并在XPath表达式中扮演着不同的角色。 错误地使用它们可能导致意想不到的结果。 例如,直接比较两个字符串,而不是将它们转换为数字,可能会导致基于字符串排序的比较,而不是数值比较。

在实际应用中,如何避免boolean()函数使用中的陷阱?

在使用

boolean()
函数时,需要注意一些常见的陷阱。

  • 空字符串与缺失属性: 空字符串
    ""
    和缺失属性是不同的。
    boolean(@attribute)
    在属性存在但为空时返回
    true
    ,而在属性不存在时,
    @attribute
    本身会返回一个空节点集,
    boolean()
    会将其转换为
    false
  • 数字字符串: 包含非数字字符的字符串,即使看起来像数字,也可能导致
    number()
    函数返回
    NaN
    。 在进行数值比较之前,务必验证字符串的格式。
  • 节点集: 记住,
    boolean(node-set)
    仅仅检查节点集是否为空,而不是检查节点集中节点的内容。 如果需要基于节点内容进行判断,需要使用更复杂的表达式。

例如,为了更安全地选择所有

price
属性大于0的
item
,可以这样做:

//item[@price and number(@price) > 0 and not(number(@price) != number(@price))]

最后的

not(number(@price) != number(@price))
用于检查
number(@price)
是否为
NaN
。 因为
NaN
与任何值(包括它自己)都不相等。

理解这些细微的差别可以帮助你编写更健壮和可靠的XPath表达式。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

338

2023.08.02

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

350

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

29

2025.11.30

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

757

2023.08.22

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1894

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2087

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1030

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

278

2023.08.03

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

5

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
XPath 参考手册
XPath 参考手册

共0课时 | 0人学习

XPath 教程
XPath 教程

共9课时 | 3.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号