- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java生成xml文件的时候如何控制xml的缩进格式
java生成xml文件的时候如何控制xml的缩进格式
使用java自带的xml api生成的xml文件,其格式都是没有缩进的,每个element都是顶到最前面,今天终于找到了比较好的处理方法,赶紧记下来.
使用Java标准的JAXP来输出可以使用:Transformer transformer = TransformerFactory.newInstance().newTransformer();transformer.setOutputProperty(OutputKeys.INDENT, yes);transformer.transform(new DOMSource(document), new StreamResult(outputFile));中间的红色代码是用于设置缩进的,比较遗憾的是JAXP只抽象出是否设置缩进(indent: yes|no),但并没有抽象出设置缩进量长度的常量(indent-number),所以默认的缩进量长度为0。如果有下面这样一个xml文档:rootabc/b/a/root会被格式化为:rootabc/b/a/root由于JAXP只是一个Java一个处理XML的框架,根据实现的不一样,可以传入实现特定的某个Key来设置缩进量。比如在Java 1.4下面,可以通过下面语句将缩进量设为2:ransformer.setOutputProperty({/xslt}indent-amount, 2);或transformer.setOutputProperty(?{/xalan}indent-amount, 2);上面两句不同之处仅在于命名空间。而在Java 1.5下面,情况就有些复杂了。Java 1.5集成了JXAP 1.3(Java 1.4集成的是JXAP 1.1,不同之处参见/j2se/1.5.0/docs/guide/xml/jaxp/JAXP-Compatibility_150.html),实现基于Xerces类库。由于内部实现上的Bug,导致了设置缩进的不同:TransformerFactory tf = TransformerFactory.newInstance();tf.setAttribute(indent-number, new Integer(2));Transformer transformer = tf.newTransformer();transformer.setOutputProperty(OutputKeys.INDENT, yes);transformer.transform(new DOMSource(document), new StreamResult(new?BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile)))));注意红色代码的不同之处。第一句设置TransformerFactory的indent-number属性,在Java 1.4下面运行会抛出异常,因为其不支持该属性,而在Java 1.5中却只能通过该属性来设置缩进。后面标为红色的代码则是由于Sun实现上的Bug,只有通过StreamResult(Writer)构造函数生成才能正确设置缩进(通过OutputStream或者File生成的StreamResult是无法设置缩进的,其实现上会忽略任何非正式的属性,而仅仅采用rt.jar下面com\sun\org\apache\xml\internal\serializer\output_perties中的配置。详细可以在ernal.serializer.ToStream类的setOutputStream方法中加断点进行分析)?如果忽略掉可移植性,确认绑定在Sun的JRE实现上面,则可以通过如下代码来更好的实现:OutputFormat format = new OutputFormat(document);format.setIndenting(true);format.setIndent(2);Writer output = new BufferedWriter( new FileWriter(outputFile) );XMLSerializer serializer = new XMLSerializer(output, format);serializer.serialize(document);但是OutputFormat类和XMLSerializer类都是位于ernal.serialize包下。如果应用对增加一个300K左右的jar包不敏感的话,我还是强烈推荐用dom4j来处理xm
您可能关注的文档
- 电路CAD实验.docx
- 最常见的不可数名词.doc
- 十五.ppt
- 作文替代词集锦.doc
- 80分法规.doc
- 5054安装步骤.doc
- 1万吨食用菌饮料项目.doc
- d德语食物大全.doc
- dB, dBi,dBd,dBm.doc
- DN、De、Dg的区别.doc
- 2025年黑龙江八一农垦大学马克思主义基本原理概论期末考试模拟题附答案.docx
- 2025年浙江育英职业技术学院思想道德修养与法律基础期末考试模拟题及答案1套.docx
- 2025年湖南科技大学潇湘学院马克思主义基本原理概论期末考试模拟题必考题.docx
- 2025年齐齐哈尔医学院思想道德修养与法律基础期末考试模拟题新版.docx
- 2025年香港城市大学(东莞)毛泽东思想和中国特色社会主义理论体系概论期末考试模拟题及答案1套.docx
- 2025年黑龙江旅游职业技术学院中国近现代史纲要期末考试模拟题及答案1套.docx
- 2025年武汉民政职业学院思想道德修养与法律基础期末考试模拟题及答案1套.docx
- 2025年赣州职业技术学院毛泽东思想和中国特色社会主义理论体系概论期末考试模拟题必考题.docx
- 2025年蚌埠城市轨道交通职业学院思想道德修养与法律基础期末考试模拟题附答案.docx
- 2025年浙江中医药大学滨江学院思想道德修养与法律基础期末考试模拟题必考题.docx
最近下载
- 工业机器人系统操作员(中级工)理论考核试卷及答案(六).docx VIP
- 专注的惊人力量.pptx VIP
- 陕西省西安市西咸新区2024-2025学年六年级上学期期末英语试题.docx VIP
- 国有企业人力资源工作流程图(收藏了).doc VIP
- MT∕T 244.1-2020 煤矿窄轨车辆连接件 连接链.pdf
- 加油站税控初始化管理系统V12.pdf VIP
- 房建施工工序定额及施工工效大全.pdf VIP
- 《天津市建设项目配建停车场(库)标准》DB29-6-2004详解.docx
- 《分析化学》全套课件完整版)ppt.pptx VIP
- 专题06 《昆虫记》中考考试题及典型习题训练 (含答案析)-中考语文常考名著之阅读指导及考试题训练.docx VIP
原创力文档


文档评论(0)