java - 如何使用 org.jdom.Element 在 Java 中访问 XML 的子元素
问题描述
我对基于 XML 的 REST 操作完全陌生。我有一个 XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<BillOfLadingCoverLetter xmlns:cmp="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Bill Of Lading Cover Letter.xsd">
<Header>
<cmp:DocumentID>
<cmp:RID>shipper</cmp:RID>
<cmp:GeneralID>2</cmp:GeneralID>
<cmp:Version>1</cmp:Version>
</cmp:DocumentID>
<cmp:DocType>
<cmp:DocTypeCode>1111</cmp:DocTypeCode>
<cmp:DocTypeDescription>COVER LETTER</cmp:DocTypeDescription>
</cmp:DocType>
<cmp:Status>FINAL</cmp:Status>
</Header>
<Body/>
</BillOfLadingCoverLetter>
我想访问并获取此 XML 中的所有字段
import org.jdom.Element;
Element jdomRoot = doc.getRootElement();
//2 jdomRoot.getChild("Header").getChild("cmp:DocumentID");
1 jdomRoot.getChild("Header").getChild("DocumentID");
1 和 2 都返回 null。但是 jdomRoot.getChild("Header") 正在返回值。
请帮助我如何访问 XML 中的值。
解决方案
将命名空间添加到 xml 文件。在程序中使用它。
XML:
代码:
SAXBuilder builder = new SAXBuilder();
FileInputStream in = new FileInputStream(xmlFile);
Document doc = builder.build(in);
Element root = doc.getRootElement();
Namespace xmlNamespace = root.getNamespace();
Element headerEle = root.getChild("Header",xmlNamespace);
Element docIDEle = headerEle.getChild("DocumentID", xmlNamespace);
System.out.println(docIDEle.getChildText("RID", xmlNamespace));
推荐阅读
- amazon-web-services - 如何仅为一个文件在 s3 存储桶上设置重定向?
- jquery - 过滤器不是jQuery代码中的函数错误
- amazon-s3 - 如何为 MultiPart Completion HTTP POST 请求计算 CONTENT-MD5 标头值?
- javascript - 我可以像这样在Javascript中声明一个变量吗?
- react-native-android - 使用真实设备作为模拟器时 React Native App 依赖
- regex - 加入数据框时触发正则表达式
- hive - 分区键的 sqoop 导入命令问题
- android - 如何在 android 中使用 dagger 对 kotlin 文件进行 UI 测试?
- grafana - 如何在grafana中嵌套变量?
- c# - 每个 httpclient/request (HttpClient) 的安全协议