从Java DOM中的XML获取元素名称

我想获取元素名称并在XML中打印数据,但不确定如何在特定元素下获取数据。

这是XML示例和我的代码。

   The Godfather 1972     Crime Drama     Don Vito Corleone      Marilyn Pauline Novak 1933-02-13 Chicago, Illinois, USA      try { File fXmlFile = new File(filename); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); NodeList nodes = doc.getElementsByTagName("movie"); System.out.println("nodes length"+ nodes.getLength()); for (int i = 0; i < nodes.getLength(); i++){ Element element = (Element) nodes.item(i); NodeList name = element.getElementsByTagName("title"); Element line = (Element) name.item(0); System.out.println(": " + line.getFirstChild().getTextContent()); 

我只想在电影里面获取元素。 但是下面的代码也会读取执行者中的 (如果我想获取内容,会导致Nullpointerexception); 我想知道是否有任何可能的方法来避免使用DOM读取性能?

 NodeList nodes = doc.getElementsByTagName("movie"); 

我对第一部电影的最终输出应该是这样的

 ('godfather', 'The Godfather', '1972', 'Crime;Drama') 

一种方法是从电影标签而不是电影标签开始阅读。 不确定这是不是你要找的!!

 NodeList nodes = doc.getElementsByTagName("movies"); Element element = (Element) nodes.item(0); NodeList movieList = element.getElementsByTagName("movie"); for (int i = 0; i < movieList.getLength(); i++) { Element movieElement = (Element) movieList.item(i); System.out.println(movieElement.getAttributes().getNamedItem("id").getNodeValue()); NodeList name = movieElement.getElementsByTagName("title"); NodeList year = movieElement.getElementsByTagName("year"); NodeList genres = movieElement.getElementsByTagName("genres"); Element genreline = (Element) genres.item(0); System.out.println(name.item(0).getFirstChild().getTextContent()); System.out.println(year.item(0).getFirstChild().getTextContent()); System.out.println(genreline.getElementsByTagName("genre").item(0).getTextContent() + ":" + genreline.getElementsByTagName("genre").item(1).getTextContent()); } 

输出:

:教父
:教父
:1972年
: 罪案剧

我建议你阅读XPath 。 以下是一些例子 。

例如,要阅读电影的年份,您可以使用XPath …

 /mdb/movies/movie/year/text()