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

如何编写XPath获取含非空值的Constant元素的Name属性列表?

解决XPath筛选非空值Constant元素Name属性的问题

原始XML结构

<Constants>
    <Constant Name="ExchangeRates"></Constant>
    <Constant Name="Company">Test</Constant>
    <Constant Name="TopFrameScreenInputs"></Constant>
    <Constant Name="TopFrameBTScreenInputs"></Constant>
    <Constant Name="MidFrame1BTScreenInputs"></Constant>
    <Constant Name="MidFrame1ScreenInputs"></Constant>
    <Constant Name="MidFrame2ScreenInputs"></Constant>
    <Constant Name="MidFrame2BTScreenInputs"></Constant>
    <Constant Name="SpareScreenInPriceInputs1"></Constant>
    <Constant Name="SpareScreenInPriceInputs2"></Constant>
    <Constant Name="SpareScreenInPriceInputs3"></Constant>
    <Constant Name="SpareScreenOptionInputs1"></Constant>
    <Constant Name="SpareScreenOptionInputs2"></Constant>
    <Constant Name="SpareScreenOptionInputs3"></Constant>
    <Constant Name="ChildFormInputsLoopCounter">1</Constant>
    <Constant Name="ScreenChildMode">TEST</Constant>
</Constants>

需求

筛选出包含非空文本值的Constant元素的Name属性(如Company、ScreenChildMode),跳过无文本值的元素(如ExchangeRates)。

问题分析

你之前尝试的XPath错误在于把筛选条件放在了Constants父节点上,而非直接针对Constant子节点做筛选,导致无法精准定位符合要求的元素。

正确的XPath语句

基础版本(匹配无空白的非空文本)

//Constants/Constant[text() != '']/@Name

如果XML中空元素可能包含换行、空格等空白字符,建议用normalize-space()处理,避免误判:

//Constants/Constant[normalize-space(text()) != '']/@Name

说明

  • //Constants/Constant:定位所有Constants下的Constant子元素
  • [text() != '']:筛选出文本节点不为空的Constant元素
  • @Name:提取符合条件元素的Name属性

若你的XML完整结构包含根节点Specification,则路径调整为:

/Specification/Constants/Constant[text() != '']/@Name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:47