[英]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.