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