用XPath读取XML节点值需先写对表达式再调用API:加载文档→编译/执行XPath→获取textContent或nodeValue;Java用javax.xml.xpath,Python推荐lxml,注意命名空间、空格、编码及空值处理。

用 XPath 读取 XML 中指定节点的值,核心是写对表达式 + 调用对应 API。不同语言实现略有差异,但思路一致:加载 XML 文档 → 编译/执行 XPath 表达式 → 获取匹配节点的文本内容(textContent 或 nodeValue)。
先确保表达式能准确命中目标节点:
<root></root> 下直接子元素 <child></child>
<name></name> 元素(最常用)id="101" 的 <person></person> 下的 <name></name>
<book></book> 的 <title></title>(注意索引从 1 开始)//title/text()
无需额外依赖,用 javax.xml.xpath 包:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("data.xml"));
<p>XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//user/name/text()"; // 注意加 text()
String name = xpath.evaluate(expression, doc); // 直接返回字符串值
System.out.println(name); // 输出该节点的文本内容
⚠️ 注意:xpath.evaluate() 对单个节点返回字符串;若可能匹配多个,改用 XPathConstants.NODESET 并遍历。
lxml 示例(更强大、支持完整 XPath 1.0):
from lxml import etree
<p>tree = etree.parse("data.xml")
result = tree.xpath("//product/price/text()")
if result:
print(result[0]) # 第一个 price 的文本值
标准库 xml.etree(轻量,XPath 支持有限):
import xml.etree.ElementTree as ET
<p>tree = ET.parse("data.xml")
root = tree.getroot()</p><h1>注意:etree 不支持 text() 函数,需先取元素再 .text</h1><p>elem = root.find(".//price") # find 只支持简单 XPath
if elem is not None:
print(elem.text)
xmlns 时,XPath 必须声明并使用前缀,否则查不到节点//node/text() 可能返回空白字符串,建议用 normalize-space() 处理,如 normalize-space(//name)
以上就是XML怎么读取指定节点的值 XPath获取节点内容的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号