2012-02-09 10 views
1

xmlを含むjava文字列をw3c domドキュメントオブジェクトに変換します。xml文字列をw3c docに変換できません

私は最初に場所を探して、ここでいくつかの良い例を考え出しました。 しかし、残念ながら私はそれらを働かせることができます!

Apperently私のコードは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)); 

は、私が出力として得た:このSYSOUTを使用している間、私は出力としてnullを得た

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

[チャンネル:ヌル]

私はいくつかの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>"; 

誰もが解決策やヒントを持っていますか?

答えて

2

これは非常に一般的な問題です。 getNodeValue()の動作は、Nodeのサブクラスに依存します。 Elementの場合、getNodeValue()となり、常にと返すnullです(他のサブクラスの動作については、Node javadocの表を参照してください)。

XML文書をデバッグする場合は、getTextContent()を使用することを検討してください。

+1

DOMを使用しないでください。これは使いやすさの点でこのようなものです。 JDOMやXOMのような現代的なものはあらゆる面で優れています。 –

1

RSS XML文字列をロードしようとしているので、http://www.thearchitect.co.uk/schemas/rss-2_0.xsdのRSS XSDを使用するように提案できます。これは、RSS文字列を読み込んで、データを編集したり、ファイルのような目的地に変換したりするのに役立ちます。 JAXBが動作するにはJAXBが必要です。お役に立てれば。

0

jdomを使用すると、外に出るXMLの処理に苦労します。通常、これは私の最初の呼び出しポートです。

jdomをオプションとして使用する場合は、ドキュメントを作成するのは簡単です。

SAXBuilder builder = new SAXBuiler(); 
Document doc = builder.build(new StringReader(YOUR_XML_STRING)); 

の注意する事は、これはあなたがW3C文書に適応する必要があるorg.jdom.Documentオブジェクトを、作成することです。これは、org.jdom.output.DOMOutputterクラスでも簡単に実現できます。

関連する問題