1
<rootNode>
    <Movies>
    <Movie id=1>
         <title> title1</title>
         <Actors>
            <Actor>Actor1</Actor>
            <Actor>Actor2</Actor>
         <Actors>
    </Movie>
    </Movies>
    <performers >
        <performer id=100>
             <name>name1</name>
             <movie idref=1/>
        </performer>
    </performers>
</rootNode>

質問 1: 映画の下にある映画だけを取得したいです。DOM と SAX の両方を試しました。また、アンダーパフォーマーも返します。SAXまたはDOMを使用してこれを回避するにはどうすればよいですか

DOM:
doc.getElementsByTagName("movie");
SAX:
public void startElement(String uri, String localName,String qName, 
                Attributes attributes) throws SAXException {

        if (qName.equalsIgnoreCase("movie")) 

質問 2: DOM または SAX を使用して要素内の要素 (movies の下の Actor) を取得するにはどうすればよいですか?

基本的にやりたいことは、データを順番に出力することです。

1,title, Actor1,Actor2
100,name1,1
4

2 に答える 2

2
doc.getElementsByTagName("movies")[0].childNodes;

すべてのmovies/movieノードを取得します (小文字/大文字に注意してください!)。簡単なチュートリアルについては、http://www.w3schools.com/dom/dom_intro.aspを参照してください。

于 2013-02-08T22:34:07.747 に答える
0

XPathは、こ​​のタイプの抽出用に設計されています。サンプル ファイルの場合、クエリは次のようになります。簡単にするために、xml が にあると仮定しましたres/rawが、実際にはInputSource、xml を取得する場所から を作成する必要があります。

    XPath xpath = XPathFactory.newInstance().newXPath();
    String expression = "/rootNode/Movies/Movie";
    try {
        NodeList nodes = (NodeList) xpath.evaluate(expression, doc,XPathConstants.NODESET);
    } catch (XPathExpressionException e) {
         e.printStackTrace();
    }
于 2013-02-08T23:03:24.150 に答える