我刚刚开始通过java学习xml解析。我已经坚持了下面这个问题很长一段时间了,需要一些帮助。
我有一个看起来像这样的xml文档(只是一个大的xml文档的小表示)。
`<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item id="2">
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>`
我试图在属性'id =“2”'存在时找到有效负载。
以下是我用xpath编译的正则表达式:
XPathExpression expr = xpath.compile(“// * [@ id = \”2 \“]”);
问题: 这个正则表达式给了我
`<item id="2">
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>`
当我只需要:
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
我如何实现这一结果?
这个问题可能真的很愚蠢,因为我只是想学习java中的xml解析。请提前帮助并表示感谢。
答案 0 :(得分:0)
使用此行仅获取子节点:
XPathExpression expr = xpath.compile("//*[@id=\"2\"]/*");
<强>结果:强>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
此表达式返回属性值为<item>
= @id
的所有2
元素的所有子元素。