Я использую выражение Xpath для получения текстовых узлов из XML-документа, как показано ниже:
<company>
<emp>
<dept>Acct</dept>
<salary>1000</salary>
<proj>
<under>E01</under>
<under>E02</under>
</proj>
<name>John Doe</name>
<gender>male</gender>
</emp>
</company>
Я написал следующее выражение XPATH для получения текстовых значений:
normalize-space(string(//emp))
Он извлекает правильные значения, и результат выглядит следующим образом:
Acct1000E01E02John Doemale
Обратите внимание, что между текстовыми значениями узлов из разных узлов нет пробелов.
Я на самом деле хочу, чтобы выходное значение было таким:
`Acct 1000 E01 E02 John Doe`
Я использовал javax.xml.xpath
для анализа и построения дерева следующим образом:
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("/employees.xml"));
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "normalize-space(string(//emp))";
String output= (String)xPath.compile(expression).evaluate(document, XPathConstants.STRING);
Я использую JAVA SE 10 здесь. Итак, версия Xpath 1.0
Есть ли лучший способ извлечь текстовые значения? Я новичок в XPath, поэтому любые предложения будут полезны.