Привет У меня есть требование, как синтаксический анализ 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 and 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. –