使用xpath编译解析xml时遇到问题

时间:2017-03-12 10:02:24

标签: java xml xpath

我刚刚开始通过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解析。请提前帮助并表示感谢。

1 个答案:

答案 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元素的所有子元素。