java - Java XML 解析器使用 xpath 澄清来获取标记值
问题描述
我是使用 xpath 的 xml 解析器的新手,请帮我提取以下 xml 的标记值
<?xml version="1.0" encoding="UTF-8"?>
<sync:ApplicationData xsi:schemaLocation="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sync="">
<sync:FileHeader>
<sync:FileCreationTimeStamp>2018-12-14T04:15:54.54</sync:FileCreationTimeStamp>
</sync:FileHeader>
<sync:CorrespondenceInfo>
<sync:OrganizationName>
<sync:OrganizationFullName>GLOBAL PATENTS/RANDY W. TUNG, ESQ </sync:OrganizationFullName>
</sync:OrganizationName>
</sync:CorrespondenceInfo>
下面是我的java代码来获取OrganizationFullName
String filePath = "D:\\cut\\2108.xml";
FileInputStream file = new FileInputStream(new File(filePath));
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(file);
XPath xPath = XPathFactory.newInstance().newXPath();
xmlDocument.getDocumentElement().normalize();
String name;
name = xPath.compile("//sync:OrganizationFullName").evaluate(xmlDocument);
System.out.println(name);
在执行得到空结果时,请协助
解决方案
问题在于“同步:”命名空间。要处理这个问题,请使用这个 XPath(完全忽略命名空间):
//*[name()='sync:OrganizationFullName']
反而。然后应该设置名称变量:
"GLOBAL PATENTS/RANDY W. TUNG, ESQ"
推荐阅读
- apache - Apache不断自行关闭,没有日志错误
- react-native - 无法导航到另一个屏幕
- php - 我在 phpmyadmin 中使用存储过程来计算图书馆管理系统的罚款
- azure - Azure 存储:SAS 令牌是否可以在其到期日期之前到期?
- android - (android) 为什么主题的样式只部分适用?
- postgresql - “;”处或附近的语法错误 第 22 行 - Postgresql
- python - 如何对 pandas 的输出进行子集包含语句以提供所有 True 值?
- react-native - Stack.Screen 中的 React Native 多个选项(参数标题 + headerRight 按钮)
- python - 允许用户仅输入 django 模型创建表单的一部分(用户提交后添加到表单)
- excel - 创建动态带状行