簡體   English   中英

Document.toString() 是 "[#document: null]" 即使 XML 被解析

[英]Document.toString() is "[#document: null]" even though XML was parsed

考慮這個例子

@Test
    public void testXML() {
        final String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><results>\n" +
                "    <status>OK</status>\n" +
                "    <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html</usage>\n" +
                "    <url/>\n" +
                "    <language>english</language>\n" +
                "    <docSentiment>\n" +
                "        <type>neutral</type>\n" +
                "    </docSentiment>\n" +
                "</results> ";

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try
        {
            builder = factory.newDocumentBuilder();
            Document doc = builder.parse( new InputSource( new StringReader( s ) ) );
            System.out.println(doc.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

當我運行這個例子時
System.out.println(doc.toString()); 結果是[#document: null]

我也在網上驗證了這個 XML,沒有發現錯誤。 我錯過了什么?

我需要的?

我需要在這個XML找出<docSentiment>

謝謝

根據MadProgrammer的建議,我設法獲得了價值。

注意:盡管顯示了 [#document: null],但實際上該文檔並不為 null。

@Test
public void testXML() {
    final String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><results>\n" +
            "    <status>OK</status>\n" +
            "    <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html</usage>\n" +
            "    <url/>\n" +
            "    <language>english</language>\n" +
            "    <docSentiment>\n" +
            "        <type>neutral</type>\n" +
            "    </docSentiment>\n" +
            "</results>";

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;
    try
    {
        builder = factory.newDocumentBuilder();
        Document doc = builder.parse( new InputSource( new StringReader( s ) ) );

        XPathFactory xPathfactory = XPathFactory.newInstance();
        XPath xpath = xPathfactory.newXPath();
        XPathExpression expr = xpath.compile("//docSentiment/type");
        NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
        System.out.println("Sentiment:" + ((DTMNodeList) nl).getDTMIterator().toString());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我將輸出作為

Sentiment:neutral

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM