在java中解析XML文件的元数据属性

时间:2012-08-16 19:39:53

标签: java xml dom

我正在尝试解析格式的XML文件。

<parent tag>
    <child tag>  
        <element key="property1">value</element> 
        <element key="property2">value</element>
    </child tag>
</parent tag>

如何获取element的{​​{1}}代码的值?我的代码如下。

property1

我正在使用DOM解析器。请帮助。

谢谢。

2 个答案:

答案 0 :(得分:3)

这完成了这里的工作(DOM + XPath),更多文档在这里:http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html

以下是关于xpath及其工作原理的一个很好的解释:http://www.xmlplease.com/axis

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;


public class XmlParseTest {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("test.xml");

        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("//element[@key='property1']/text()");
        Object result = expr.evaluate(doc, XPathConstants.NODESET);

        NodeList nodes = (NodeList) result;
        for (int i = 0; i < nodes.getLength(); i++) {
            System.out.println(nodes.item(i).getNodeValue()); 
        }
    }
}    

答案 1 :(得分:1)

"An Introduction to APIs for XML Processing"是开始学习Java中的XML解析

的一个好点