You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML/XPath值类型疑问:是否仅为字符串/节点及能否获取嵌套列表

关于XML值与XPath返回类型的疑问解答

1. 忽略XSD定义时,XML值的默认类型

忽略XSD或<xs:element>这类类型定义的情况下,XML中所有文本内容默认都是字符串类型,不会自动解析为数字、布尔值等其他类型。比如你给出的XML示例:

<Values>
    <String>hi</String>
    <Number>2</Number>
</Values>

这里<Number>标签里的2本质还是字符串,不会被自动识别为数字。对应的XPath表达式Values/String和Values/Number,如果取节点的文本值,返回的都是字符串类型。

2. XPath的返回值类型范围

你总结的类型方向基本准确,XPath的返回类型核心分为节点/节点集和原子值/原子值序列两大类,对应你提到的几种情况:

  • Values/String:若取节点文本,返回单个字符串"hi";若取节点本身,返回对应元素节点
  • Values:返回<Values>元素节点(非叶子节点,包含子节点)
  • Values/*:取<Values>下所有子元素节点,若取这些节点的文本值,返回字符串数组["hi", "2"];若取节点本身,返回元素节点数组
  • Others/Other:对应下方XML:
    <Others>
        <Other><x>2</x></Other>
        <Other><x>2</x></Other>
    </Others>
    
    该表达式返回两个<Other>元素节点组成的节点数组(node[]),因为<Other>不是叶子节点,包含子节点<x>。

补充说明:XPath也支持数字、布尔值等原子类型,但需要通过显式转换(比如number()函数)才能得到,默认取文本的话均为字符串。

3. XPath能否获取嵌套列表结果?

原生XPath(不借助额外代码处理)无法直接返回类似JSON中[[1,2], [3,4]]的嵌套列表结构。

举对应XML的例子:

<Root>
    <x>
        <y>1</y>
        <y>2</y>
    </x>
    <x>
        <y>3</y>
        <y>4</y>
    </x>
</Root>

用//x/y会返回所有<y>节点文本值组成的扁平序列["1", "2", "3", "4"];用//x则返回两个<x>节点组成的节点集,每个节点包含自身的<y>子节点,但这并非嵌套的字符串列表。

要得到嵌套列表结构,需在XPath查询后通过额外代码逻辑(比如遍历每个<x>节点,再提取其下<y>的文本值)来构建,原生XPath本身不会直接返回这种嵌套的原子值序列。


内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:42:15