editこの例では、DOM 用の Java ランタイム API に含まれている Xerces パーサーを使用しています。JDOM2 ソリューションについては、rolfl からの回答を参照してください。
出発点として、次のスニペットを使用できます。本当に達成したいことに基づいて、変更は自分で行う必要があります。
xml = "<parent xml:space=\"preserve\">\n"
+ "Hello, my name is\n"
+ " <variable type=\"firstname\">ABC</variable>\n"
+ "and my last name is \n"
+ " <variable type=\"lastname\">XYZ</variable>\n"
+ "</parent>";
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new ByteArrayInputStream(xml.getBytes()));
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodeList = (NodeList) xPath.compile("//parent").evaluate(document, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.println(nodeList.item(i).getTextContent());
}
出力
Hello, my name is
ABC
and my last name is
XYZ
注スニペットは最適化されていません。もっとPoCとして見てください。