从SAX或Dom中的XML读取元素内部元素

时间:2013-02-08 18:55:41

标签: java xml dom sax

<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获取元素内部的元素(电影中的Actor)?

基本上,我想要做的是按顺序输出数据。

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

2 个答案:

答案 0 :(得分:1)

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

获取所有movies/movie个节点(注意低/大写!)。请参阅此处http://www.w3schools.com/dom/dom_intro.asp获取简短教程。

答案 1 :(得分:0)

XPath专为此类提取而设计。对于您的示例文件,查询将类似于以下内容。为简单起见,我假设您的xml位于res/raw,但实际上您需要从获取xml的地方创建InputSource

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