如何在Java中将String转换为XML对象

时间:2012-10-02 21:24:46

标签: java xml xml-parsing

我从Web服务获取SOAP消息,并且可以使用以下代码将响应字符串转换为XML文件。这很好用。但我的要求是不将SOAP消息写入文件。我只需要将这个XML文档对象保存在内存中,并提取一些要在进一步处理中使用的元素。但是,如果我只是尝试访问下面的文档对象,它就会变为空。

有人可以告诉我如何将String转换为内存中的XML对象(无需写入文件)?

String xmlString = new String(data); 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  

DocumentBuilder builder;  
try  
{  
    builder = factory.newDocumentBuilder();  

    // Use String reader  
    Document document = builder.parse( new InputSource(  
            new StringReader( xmlString ) ) );  

    TransformerFactory tranFactory = TransformerFactory.newInstance();  
    Transformer aTransformer = tranFactory.newTransformer();  
    Source src = new DOMSource( document );  

    Result dest = new StreamResult( new File( "xmlFileName.xml" ) );  
    aTransformer.transform( src, dest );

}

2 个答案:

答案 0 :(得分:0)

删除最后5行代码,你将只在内存中包含DOM文档。将此文档存储在某个字段中,而不是存储在本地变量中。

如果这还不够,那么请用代码说明你对的意思“如果我只是尝试访问下面的文档对象,它就会变为空”

答案 1 :(得分:0)

JB Nizet是对的,第一步是从xmlString创建一个DOM。这会将您的xmlString(或SOAP消息)加载到内存中的Document中。以下步骤正在做什么(与Transform相关的所有事情)是将DOM序列化为文件(xmlFileName.xml),这不是你想要做的,对吧?

当你说你的DOM是空的时,我认为你试图用document.toString()打印出DOM的内容,并返回类似“[document:null]”的内容。这并不意味着您的DOM是空的。实际上你的DOM包含数据。您现在需要使用DOM API来访问文档中的节点。尝试类似document.getChildNodes(), document.getElementsByTagName(), etc

的内容