3

我想使用 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

4 回答 4

9

您也可以只使用javax.xml.xpathAPI:

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);
    }

}
于 2011-11-04T14:04:31.287 回答
5

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

于 2011-11-04T14:23:23.220 回答
1

您可以使用Java Xpath API做到这一点

于 2011-11-04T14:04:06.653 回答
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 中列出 xml 文件中名称为“elemeNtname”的所有元素。

于 2011-11-04T14:29:38.243 回答