我正在尝试解析具有以下结构的xml
这是我写的解析它的代码片段
doc.getDocumentElement().normalize();
System.out.println ("Root element: " +
doc.getDocumentElement().getNodeName());//prints GoodReadsResponse correctly
NodeList bk = doc.getElementsByTagName("book");// single all encompassing element in response
Node n= bk.item(1);// since the 0th node is id the 1st must be the title
System.out.println("Node value"+n.getLocalName());
Element e=(Element)n;
NodeList titleList= e.getElementsByTagName("title");//get the title
Element titleElem = (Element) titleList.item(1);
Node titleNode = titleElem.getChildNodes().item(0);// get the node value
book.setTitle(titleNode.getLocalName());// this prints null instead of printing Hamlet--why??
System.out.println("Title in parser"+titleNode.getLocalName());//null again
编辑:代码中指出的问题是titleNode.getLocalName()
始终为空,我无法弄清楚原因。我把我的思想结构作为注释放在代码中。
知道为什么会这样吗?指针将不胜感激!
答案 0 :(得分:1)
以下代码
NodeList bk = doc.getElementsByTagName("book"); //This get All BOOKS
返回所有图书项目的NodeList,因为您的xml中只有一本书,您应该使用
Node n= bk.item(0);
在这种情况下,n = book节点 此外,你必须为标题做同样的事情
NodeList titleList= e.getElementsByTagName("title");//get All titles
Element titleElem = (Element) titleList.item(0);
然后你的其余代码应该可以正常工作!