document转化为string的问题

ershihaidao 2012-08-14 04:16:15
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();

StringWriter writer = new StringWriter();
javax.xml.transform.TransformerFactory.newInstance().newTransformer().transform(new javax.xml.transform.dom.DOMSource(root), new javax.xml.transform.stream.StreamResult(writer));
send = writer.toString();

得到的document转化为string

格式如下:
<branchno>00301</branchno>
<mjaccttypcd>CML</mjaccttypcd>
<miaccttypcd>5400</miaccttypcd>
<opendate>20120801</opendate>
<isloanlimit/>
<isrevolveloan/><creditlimit/>
<taxreportfororg>2010008015</taxreportfororg>
<taxreportforper>2010008015</taxreportforper>

现在问题是这样的:
1、像<isloanlimit/>这样的,数据为空,所以document转化为string时,得到的是<isloanlimit/>,而不是期望的
<isloanlimit><isloanlimit/> 。这个可以通过设置,让document转化为string时,为我期望的格式吗?
即内容为空时,成<isloanlimit><isloanlimit/>的格式。
2、另外这样的格式会印象xml的解析吗?
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
scbb 2012-08-14
  • 打赏
  • 举报
回复
接上面你的root是Document类型的吧?
scbb 2012-08-14
  • 打赏
  • 举报
回复

public String format(Document document) {
try {
OutputFormat format = new OutputFormat(document);
format.setLineWidth(250);
format.setIndent(2);
format.setOmitXMLDeclaration(false);
format.setOmitDocumentType(false);
format.setIndenting(true);
format.setEncoding("UTF-8");
Writer out = new StringWriter();
XMLSerializer serializer = new XMLSerializer(out, format);
serializer.serialize(document);
return out.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
}




试试看。
MiceRice 2012-08-14
  • 打赏
  • 举报
回复
1、恐怕不行,原因见2;
2、看不同的解析器,因为:

<isloanlimit></isloanlimit> 表示有内容,但内容是空的,类似于 String str = "";
<isloanlimit/> 表示没有内容,类似于 String str = null;

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧