Tôi muốn sử dụng JDOM để đọc trong một tệp XML, sau đó sử dụng XPath để trích xuất dữ liệu từ Tài liệu JDOM. Nó tạo ra đối tượng Document tốt, nhưng khi tôi sử dụng XPath để truy vấn Document cho một List of elements, tôi không nhận được gì cả.Vùng tên XML mặc định, JDOM và XPath
Tài liệu XML của tôi có một không gian tên mặc định được xác định trong phần tử gốc. Điều thú vị là, khi tôi loại bỏ không gian tên mặc định, nó chạy thành công truy vấn XPath và trả về các phần tử mà tôi muốn. Tôi phải làm gì khác để nhận được truy vấn XPath của mình để trả lại kết quả?
XML:
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.foo.com">
<dvd id="A">
<title>Lord of the Rings: The Fellowship of the Ring</title>
<length>178</length>
<actor>Ian Holm</actor>
<actor>Elijah Wood</actor>
<actor>Ian McKellen</actor>
</dvd>
<dvd id="B">
<title>The Matrix</title>
<length>136</length>
<actor>Keanu Reeves</actor>
<actor>Laurence Fishburne</actor>
</dvd>
</collection>
Java:
public static void main(String args[]) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document d = builder.build("xpath.xml");
XPath xpath = XPath.newInstance("collection/dvd");
xpath.addNamespace(d.getRootElement().getNamespace());
System.out.println(xpath.selectNodes(d));
}
Bí quyết, cảm ơn! – Michael
Điều này thật tuyệt vời, tôi đã dành 3 giờ đồng hồ để tự hỏi tại sao XPath của tôi đột nhiên không hoạt động và đó là điều này. Pffh! :) – Esko
x là gì? – Meinkraft