XPath 3.0中的map和array怎么用
发布时间 - 2026-01-30 00:00:00 点击率:次XPath 3.0 原生支持 map 和 array 类型,扩展了传统序列模型;map 是无序字符串键值对容器,用 ? 访问键;array 是从 1 开始索引的有序集合,用 [] 访问元素;二者均不可变,操作返回新值。
XPath 3.0 原生支持 map 和 array 类型,这是对传统“序列+节点”模型的重要扩展,让 XPath 能更自然地处理类 JSON 的结构化数据。用法不复杂但容易忽略细节。
map:键值对集合,类似字典或对象
map 是无序的键值对容器,键必须是字符串(其他类型会自动转为字符串),值可以是任意 XPath 类型(包括另一个 map 或 array)。
- 创建方式:map { "name": "Alice", "age": 30, "active": true() }
- 取值写法:$m("name") 或 $m?name(推荐后者,更清晰)
- 嵌套访问:$m?address?city(假设 address 本身也是 map)
- 检查键是否存在:map:contains($m, "email")
- 更新值(返回新 map,不可变):map:put($m, "score", 95)
array:有序索引集合,类似列表或数组
array 是从 1 开始索引的有序序列(注意:不是 0!),支持随机访问、切片和追加。
- 创建方式:["apple", "banana", "cherry"] 或 array { "x", "y" }
- 取值写法:$a[1](第一个元素)、$a[2 to 3](切片)、$a?size()(长度)
- 追加元素:array:append($a, "date")(返回新 array)
- 遍历处理:array:for-each($a, function($x) { upper-case($x) })
- 与 map 混用很常见:$users[1]?profile?roles[1](假设 users 是 array,每个元素含 profile map)
实用组合技巧
map 和 array 经常一起出现,尤其在处理 JSON 转换后的 XML 结构(如用 json-to-xml())时:
- 把 JSON 数组转成 XPath array:json-to-xml('{ "items": [1,2,3] }')//*:array → 再用 array { ... } 构造
- 过滤 map 列表:$users[?status = "active"]($users 是 a
rray of map)
- 构造带默认值的 map:map:merge(( $base, map { "id": uuid() } ))
基本上就这些。关键记住:map 用 ? 访问键,array 用 [ ] 索引(从 1 开始),所有操作都返回新值——XPath 3.0 的 map/array 是不可变的。
# js
# json
# app
# ai
# apple
# 键值对
# Array
# for
# date
# xml
# 字符串
# 切片
# append
# map
# function
# 对象
# 键值
# 是从
# 这是
# 第一个
# 遍历
# 再用
# 均不
# 自然地
# 转成
# 是否存在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在Windows环境下新建FTP站点并设置权限?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
深圳网站制作的公司有哪些,dido官方网站?
利用vue写todolist单页应用
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何用狗爹虚拟主机快速搭建网站?
使用Dockerfile构建java web环境
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何打造高效商业网站?建站目的决定转化率
如何续费美橙建站之星域名及服务?
PythonWeb开发入门教程_Flask快速构建Web应用
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Linux系统运维自动化项目教程_Ansible批量管理实战
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
企业网站制作这些问题要关注
python中快速进行多个字符替换的方法小结
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Angular 表单中正确绑定输入值以确保提交与验证正常工作
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何在宝塔面板中创建新站点?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
C#如何调用原生C++ COM对象详解
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
Python结构化数据采集_字段抽取解析【教程】
如何在自有机房高效搭建专业网站?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
微信小程序 scroll-view组件实现列表页实例代码
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
jquery插件bootstrapValidator表单验证详解
怎样使用JSON进行数据交换_它有什么限制
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
历史网站制作软件,华为如何找回被删除的网站?
Windows Hello人脸识别突然无法使用
北京网站制作的公司有哪些,北京白云观官方网站?
七夕网站制作视频,七夕大促活动怎么报名?
如何快速生成ASP一键建站模板并优化安全性?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何挑选最适合建站的高性能VPS主机?
如何快速生成橙子建站落地页链接?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
创业网站制作流程,创业网站可靠吗?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】


