您好我有要求像解析XML,並得到所有子節點有節點<Employees>
和</Employees>
解析XML得到所有子節點和他們的數據使用Java XPATH
之間的數據我有XML這樣的:
<?xml version="1.0"?>
<Employees>
<Employee emplid="1111" type="admin">
<firstname>test1</firstname>
<lastname>Watson</lastname>
<age>30</age>
<email>[email protected]</email>
</Employee>
<Employee emplid="2222" type="admin">
<firstname>Sherlock</firstname>
<lastname>Homes</lastname>
<age>32</age>
<email>[email protected]</email>
</Employee>
</Employees>
我需要一個像
<Employee emplid="1111" type="admin">
<firstname>test1</firstname>
<lastname>Watson</lastname>
<age>30</age>
<email>[email protected]</email>
</Employee>
<Employee emplid="2222" type="admin">
<firstname>Sherlock</firstname>
<lastname>Homes</lastname>
<age>32</age>
<email>[email protected]</email>
</Employee>
響應我曾嘗試下面的代碼
FileInputStream file = new FileInputStream(new File("E:\\test.xml"));
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(file);
XPath xPath = XPathFactory.newInstance().newXPath();
System.out.println("*************************");
String expression = "/Employees/*";
System.out.println(expression);
String email = xPath.compile(expression).evaluate(xmlDocument);
System.out.println(email);
,但我越來越喜歡
test1
Watson
30
[email protected]
迴應,我已經使用表達喜歡/員工/ *,但它不工作
誰能幫我做這個?
的XPath表達式是正確的選擇根元素的所有子元素。但是,要將節點序列化回一串標記,需要使用DOM Level 3 Load和Save API或默認轉換器。 –
所以我們不能使用簡單的xpath?如果你有任何工作代碼可以分享? –
XPath 1.0和2.0不會序列化節點,不,在XPath 3.0中,您可以使用http://www.w3.org/TR/xpath-functions-30/#func-serialize,例如, '/ Employees/*/serialize(。)'得到一串字符串。但Oracle Java JRE不支持XPath 3.0,您使用的API不是專爲XPath 2.0或3.0而設計的。 –