8

助けが必要です。Stringfiledata 変数に XMLdocument を格納しました。この変数をDOMSource型に変換して、次のコードを使用します。

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

javax.xml.transform.Transformer による変換:

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

しかし、私の flatXML は変換後に空です。doc 変数を確認したところ、XML ドキュメントが含まれており、すべてが正しく解析されました。ソースを実際のパスに変更すると、すべて問題なく動作します。

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

私の問題はこのコード行にあると思います:

DOMSource source = new DOMSource(doc);

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

4

2 に答える 2

16

なぜ DOMSource を構築しようとしているのですか? 変換への入力として提供するソースだけが必要な場合は、次のように実行できる StreamSource を提供する方がはるかに効率的です。

new StreamSource(new StringReader(fileData))

できれば、systemId も指定してください。DOM の構築は時間の無駄です。

于 2013-05-20T15:30:50.213 に答える
1

参考までに、DOMSource(String) のように引数が String のみのクラス 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

于 2013-05-20T13:38:15.377 に答える