解析这个XML时我做错了什么

时间:2013-09-12 01:01:31

标签: java xml parsing xml-parsing

我正在尝试解析具有以下结构的xml Structure

这是我写的解析它的代码片段

  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()始终为空,我无法弄清楚原因。我把我的思想结构作为注释放在代码中。 知道为什么会这样吗?指针将不胜感激!

1 个答案:

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

然后你的其余代码应该可以正常工作!