简体   繁体   English

如何使用XmlPullParser解析XML

[英]How to parse XML using XmlPullParser

I want to use the Java XmlPullParser to parse an XML file like this: 我想使用Java XmlPullParser来解析XML文件,如下所示:

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

I want only <tag1> text1 </tag1> as the result. 我只想要<tag1> text1 </tag1>作为结果。 My current method produces both <tag1> text1 </tag1> and <tag1>text4<tag1/> . 我当前的方法产生<tag1> text1 </tag1><tag1>text4<tag1/> What else must I do? 我还能做什么?

Edit: 编辑:

I am getting the XML in String format. 我正在以String格式获取XML。 I want to parse it using org.xmlpull.v1.XmlPullParser; 我想用org.xmlpull.v1.XmlPullParser;解析它org.xmlpull.v1.XmlPullParser; .

You could also just use the javax.xml.xpath APIs: 您也可以使用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);
    }

}

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

您可以使用Java Xpath API执行此操作

try to use dom4j library 尝试使用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");

after this in method you will get in els list all the elements in xml file with name "elemeNtname". 在此方法之后,您将获得els列出名为“elemeNtname”的xml文件中的所有元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM