繁体   English   中英

如何在Java中将字符串转换为XML对象

[英]How to convert a String to an XML object in Java

我从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 );

}

删除最后5行代码,您将只在内存中存储DOM文档。 将此文档存储在某个字段中,而不是存储在局部变量中。

如果那还不够,请用代码解释“如果我只是尝试访问下面的文档对象,它就为空”的含义。

JB Nizet是正确的,第一步是使用xmlString创建一个DOM。 这会将xmlString(或SOAP消息)加载到内存文档中。 以下步骤正在执行的操作(与Transform相关的所有操作)是将DOM序列化为文件(xmlFileName.xml),这不是您想要执行的操作,对吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM