我想将包含xml的java字符串转换为w3c dom文档对象。

我首先在整个地方进行搜索,并在这里找到了一些关于stackoverflow的好例子。
但是可悲的是我能让他们工作!

显然我的代码无法100%工作。

似乎它解析了字符串,但是节点中没有值。
这就是我到目前为止所得到的!

Document newDoc = null;

InputSource is = new InputSource();
is.setCharacterStream(new StringReader(TestFiles.RSS_FEED_FILE_2));

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = null;
builder = factory.newDocumentBuilder();
newDoc = builder.parse(is);


当我之后像这样进行sysout时:

System.out.println(newDoc.getDocumentElement().getElementsByTagName("channel").item(0)
.getNodeValue());


使用此sysout时,输出为null:

System.out.println(newDoc.getDocumentElement().getElementsByTagName("channel").item(0));


我得到的输出:[channel:null]

所以我有一个对象,否则它将引发一些空指针异常,但它在?!中不包含任何值。

常量的内容是这样的:

public final static String RSS_FEED_FILE_2 =    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                                            "<rss version=\"2.0\">\n" +
                                            "<channel>\n" +
                                            "<title>sunday</title>\n" +
                                            "<link>http://www.google.nl</link>\n" +
                                            "<pubDate>2012-02-05 20:58</pubDate>\n" +
                                            "<lastBuildDate>2012-02-08 09:48</lastBuildDate>\n" +
                                            "<description>blabla </description>\n" +
                                            "<item>\n" +
                                            "<title><![CDATA[title]]></title>\n" +
                                            "<link><![CDATA[http://www.google.nl]]></link>\n" +
                                            "<guid><![CDATA[2266610]]></guid>\n" +
                                            "<source><![CDATA[sunday]]></source>\n" +
                                            "<author><![CDATA[me]]></author>\n" +
                                            "<description><![CDATA[blalbalavblabllllll!]]></description>\n" +
                                            "</item>\n" +
                                            "</channel>\n" +
                                            "</rss>";


有人有解决方案或提示吗?

最佳答案

这是很常见的陷阱。 getNodeValue()的行为取决于Node的子类。对于ElementgetNodeValue()将始终返回null(有关其他子类的行为,请参见Node javadoc中的表)。

如果要调试XML文档,请考虑使用getTextContent()

07-25 23:50
查看更多