使用Java以奇怪的格式解析复杂的XML

时间:2016-12-27 23:02:21

标签: java xml parsing

我收到格式奇怪的xmls格式如下:

<File xml:space="preserve">
     <Subfile keyword="Store" tag="0">
          <Value number="1">Amazon</Value>
     </Subfile>
     <Subfile keyword="Owner" tag="1">
          <Value number="1">Alice Murphy</Value>
     </Subfile>
     <Subfile keyword="Date" tag="2">
          <Value number="1">20161114</Value>
     </Subfile>
</File>

在这种情况下,检索价值的最有效方法是什么?#Alice; Alice Murphy&#34;而不必解析整个XML?

感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用xpath解析所需的节点。

下面的xpath查找子文件节点的Value节点,其中关键字是“Owner”

// parse the XML as a W3C Document
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("<xml path and filename>"));

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/File/Subfile[@keyword='Owner']/Value";
Node ownerNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);