如何使用XmlPullParser解析XML

时间:2011-11-04 14:01:28

标签: java xml xmlpullparser

我想使用Java XmlPullParser来解析这样的XML文件:

<start>
    <tag1> text1 </tag1>
    <tag2> 
        <tag3>text3</tag3>
        <tag1>text4</tag1>
    </tag2>
    <tag4> text5</tag4>
</start>

我只想要<tag1> text1 </tag1>作为结果。我当前的方法同时生成<tag1> text1 </tag1><tag1>text4<tag1/>。我还能做什么?

修改

我以String格式获取XML。我想使用org.xmlpull.v1.XmlPullParser;解析它。

4 个答案:

答案 0 :(得分:9)

您也可以使用javax.xml.xpath API:

import java.io.FileReader;
import javax.xml.xpath.*;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

public class XPathDemo {

    public static void main(String[] args) throws Exception {
        XPathFactory xpf = XPathFactory.newInstance();
        XPath xpath = xpf.newXPath();
        InputSource xml = new InputSource(new FileReader("input.xml"));
        Node result = (Node) xpath.evaluate("/tag1", xml, XPathConstants.NODE);
        System.out.println(result);
    }

}

答案 1 :(得分:5)

每个人都有自己的Java处理XML处理首选项,我更喜欢在Java中处理XML时使用JAXB因为我发现使用这个直接的xpath更容易。

答案 2 :(得分:1)

您可以使用Java Xpath API

执行此操作

答案 3 :(得分:0)

尝试使用dom4j库

    InputStream is = FileUtils.class.getResourceAsStream(filepath);
    SAXReader reader = new SAXReader();
    org.dom4j.Document doc = reader.read(is);
    is.close();
    Element content = doc.getRootElement();
    List<Element> els = content.elements("elemeNtname");

在此方法之后,您将获得els列出名为“elemeNtname”的xml文件中的所有元素。