从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()