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/>ます。他に何をしなければなりませんか?

編集:

XML をString形式で取得しています。を使用して解析したい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を使用することです。

于 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");

この in メソッドの後、「elemeNtname」という名前の xml ファイル内のすべての要素を els リストで取得します。

于 2011-11-04T14:29:38.243 に答える