如何在Java中将String转换为DOMSource?

时间:2013-05-20 13:19:25

标签: java xml

我需要一些帮助。在我的String filedata变量中,我存储了一个XML文档。现在我想将此变量转换为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);

但我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:14)

为什么要尝试构建DOMSource?如果您想要的只是提供转换输入的源,那么提供StreamSource会更有效率,您可以这样做

new StreamSource(new StringReader(fileData))

最好也提供systemId。构建DOM是浪费时间。

答案 1 :(得分:1)

仅供参考:没有类DOMSource的构造函数只有String参数,如DOMSource(String)。
构造函数如下:
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