如何使用DOM解析器解析XML

3
如何使用DOM解析器解析以下XML:
<Result>
<Status>OK</Status>
<All_BookDetails>
<BookAuthor>Mohammadi Reyshahri</BookAuthor> 
<BookRating>0</BookRating>
<BookDescription>Islamic belief and ideology</BookDescription>
<DatePublished>May  1 1992 12:00AM</DatePublished>
<BookTitle>Are You Free or Slave</BookTitle>
<BookID>171</BookID>
<BookCode>EN171</BookCode>
<BookImage>1.jpg</BookImage>
<TotalPages>164</TotalPages>
</All_BookDetails>
</Result>

我想获取BookAuthorBookRatingBookDescriptionDatePublishedBookTitleBookIDBookCodeBookImageTotalPages的值。请问如何实现?我尝试解析上面的XML,选择All_BookDetails作为父节点,但是nodelist返回的长度为0。谢谢。

2
一个可以开始的地方:http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/。 - Raghunandan
在哪个设备和其API级别中出现了这个问题?我感觉这正是我所面临的问题,看看这里 - RobinHood
请展示一些您尝试过的代码。 - Mohit Mehta
非常抱歉,大家。我在注释时犯了一个错误。我没有选择<All_BookDetails>作为父级。这是我的代码中的一个错误。 - Qadir Hussain
1个回答

3
获得XML DOM元素
public Document getDomElement(String xml) {
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    dbf.setCoalescing(true);
    try {

        DocumentBuilder db = dbf.newDocumentBuilder();

        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));
        doc = db.parse(is);

    } catch (ParserConfigurationException e) {
        return null;
    } catch (SAXException e) {
        return null;
    } catch (IOException e) {
        return null;
    }

    return doc;

}

然后我尝试了这个方法,它有效了。

Document doc = parser.getDomElement(XMLString);
            NodeList nl = doc.getElementsByTagName("All_BookDetails");

            progressDialog.setCancelable(true);
            Element e = (Element) nl.item(0);
            BookRating = (Integer.valueOf(parser.getValue(e,
                        "BookAuthor")));

            BookTitle = parser.getValue(e, "BookTitle");
            BookAuthor = parser.getValue(e, "BookAuthor");
            BookPublishDate = parser.getValue(e, "DatePublished");
            BookDescription = parser.getValue(e, "BookDescription");
            bookID = parser.getValue(e, "BookID");
            bookCode = parser.getValue(e, "BookID");
            bookPageCount = parser.getValue(e, "TotalPages");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接