2013-05-20 8 views
6

私は助けが必要です。私のString filedata変数では、私はXML文書を格納しました。StringをJavaのDOMSourceに変換するにはどうすればよいですか?

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = db.parse(new InputSource(new StringReader(filedata))); 
DOMSource source = new DOMSource(doc); 

とたjavax.xml.transform.Transformerによって変換:今、私は、この変数はDOMSource型に変換し、このコードを使用したい

Transformer transformer = XMLTransformerFactory.getTransformer(messageType); 
StreamResult res = new StreamResult(flatXML); 
transformer.transform(source, res); 

をしかし、私のflatXMLは、変換後の空です。私は私のdoc変数をチェックし、それは私のXML文書を含んでおり、すべてのものを正しく解析しました。私は実際のパスに私のソースを変更した場合はすべてがOKで、正常に動作します:

Source source = new StreamSource("c:\\temp\\log\\SMKFFcompleteProductionPlan.xml"); 

が、私は私の問題は、このコード行に位置すると思う:

DOMSource source = new DOMSource(doc); 

が、私は解決する方法がわかりませんこの問題。

答えて

13

は、なぜあなたはDOMSourceを構築しようとしていますか?あなたが望むすべてが変換への入力として供給する源である場合、それはあなたが

new StreamSource(new StringReader(fileData)) 

は、好ましくは同様にシステムIDを供給として行うことができます、のStreamSourceを供給するためにはるかに効率的です。 DOMの構築は時間の無駄です。

+0

ああ、ありがとうございました)今は仕事です))しかし、どうして説明できますか、DOMSourceでうまくいかないのですか) – turlife

+0

いいえ、申し訳ありません。何が間違っているかすぐに見てください。しかし、あなたはDOMとXSLT実装をどのように使用しているのかは言いません。実装固有のものになる可能性があります。 –

+0

こんにちは。私の別の質問に答えることができますか? http://stackoverflow.com/questions/16669639/edit-two-xml-files – turlife

1

FYI: DOMSource(String)のような引数のみのStringを持つClass DOMSourceのコンストラクタはありません。次のように
コンストラクタは以下のとおりです。
I)DOMSource()
II)DOMSource(Node n)
III)DOMSource(Node node, String systemID)
をご覧ください。http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/dom/DOMSource.html

+0

DOMSourceに文書型変数を渡しました:DOMSource source =新しいDOMSource(doc);だけでなく、文字列 – turlife

+0

どうしたら可能ですか? –

+0

ドキュメント変数をノードタイプに変換する必要がありますか? – turlife

関連する問題