dec*_*rig 5 java xml xpath jdom type-safety
我目前正在使用JDOM进行一些简单的XML解析,看起来没什么类型安全 - 我在使用内置的Java DOM解析器时遇到了类似的问题,只需要更多的API来解决问题.
例如,XPath.selectNodes将一个Objectas作为参数并返回一个原始列表,它只是感觉有点Java 1.1
是否存在用于Java的通用化XML和XPath库,或者是否有某种原因导致无法以类型安全的方式执行XPath查询?
如果您熟悉 HTML 上的 CSS 选择器,那么了解Jsoup也支持 XML 可能会更好。
更新:好吧,这显然是一个非常有争议的答案。然而,当您只想选择节点值时,它最终可能比 Xpath 更容易、更简洁。Jsoup API 非常灵活。让我们举一个更具体的例子。假设您有一个如下所示的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="1">
<name>John Doe</name>
<age>30</age>
<address>
<street>Main street 1</street>
<city>Los Angeles</city>
</address>
</person>
<person id="2">
<name>Jane Doe</name>
<age>40</age>
<address>
<street>Park Avenue 1</street>
<city>New York</city>
</address>
</person>
</persons>
Run Code Online (Sandbox Code Playgroud)
然后你可以像下面这样遍历它:
Document document = Jsoup.parse(new File("/persons.xml"), "UTF-8");
Element person2 = document.select("person[id=2]").first();
System.out.println(person2.select("name").text());
Elements streets = document.select("street");
for (Element street : streets) {
System.out.println(street.text());
}
Run Code Online (Sandbox Code Playgroud)
哪个输出
简·无名氏 主要街道1 公园大道 1 号
更新2:从2012年3月发布的Jsoup 1.6.2开始,Jsoup API正式支持XML解析。
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |