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获取元素内的元素(电影下的演员)?

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

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 在 a 中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 回答