当前位置: 首页 > 面试题库 >

由于移至Java 1.7 Xml Document Element不会缩进

习斌
2023-03-14
问题内容

我正在尝试缩进由Transformer生成的XML。除了第一个节点-
文档元素之外,所有DOM节点都按预期缩进。document元素不是以新行开头,只是在XML声明之后立即进行连接。

当我使用java 1.6或1.5时,当我移至java 1.7时会出现此错误。

我的代码:

ByteArrayOutputStream s = new OutputStreamWriter(out, "utf-8");

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");

transformer.transform(new DOMSource(doc), new StreamResult(s));

输出:

<?xml version="1.0" encoding="UTF-8"?><a>
       <b>bbbbb</b>
 </a>

有人知道为什么吗?

顺便说一句,当我添加属性时

transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");

它按预期方式工作,但是xml声明已更改,它现在也具有独立属性,并且我不想更改xml声明。


问题答案:

好 ,

我在Java API中发现了以下内容:

如果指定了doctype-system属性,则xml输出方法应在第一个元素之前输出文档类型声明。

所以我用了这个属性

 transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes");

它解决了我的问题,而没有更改我的xml声明。

谢谢。



 类似资料:
  • 我正在用PyGame制作一个小游戏,相机聚焦在一个代表角色的精灵上,当按下箭头键时,地图会围绕它移动。问题是地图不动。我以前多次遇到过这个问题,我想我已经把它缩小到可能的范围,但是我不知道如何真正解决这个问题。 这是代码: 基于我过去的PyGame程序,我总是在移动被绘制到屏幕上的精灵集时遇到问题,比如我在这里所做的。即使是平庸简单的例子也会失败。我想知道的是这是为什么,我怎样才能简明扼要地画出大

  • 问题内容: 从中移出文件时,我希望发生两件事: 更新对该类的所有引用(在项目的所有文件中),以便使用新包 我在Eclipse Ganymede中使用颠覆性工具。当我将文件从一个包拖到另一个包时,所有引用都将更新,并且文件在文件系统上移动。但是SVN没有意识到这一点,因此该命令在不存在时(显然是因为eclipse已经移动了它)而不会起作用(显然)。 有没有办法让Eclipse进行重构,但是使用svn

  • 如果你开始在GitBook上写书了,但现在你想把它的源代码托管到GitHub上,不用担心,这很简单: 使用GitHub导入工具 使用GitHub的导入工具:import.github.com/new。 输入你的GitBook的git url,例如:https://git.gitbook.com/MyName/MyBook.git(这个url可以在你书本的设置中找到)。 输入你的GitHub仓库。

  • 为了增强用户体验,CSS3新增的一个非常实用的 resize属性,它允许用户通过拖动的方式,来自由缩放元素的尺寸。这在以前只能通过Javascript 编写大量脚本来实现,费时费力,效率低下。 resize属性的可选值有 none | both | horizontal | vertical,默认值为 none。none 表示不允许用户调整元素的尺寸;both 表示用户可以调整元素的宽度和高度;h

  • 我有一个占用内存的java服务器任务。首先,我怀疑它是否超过了MinHeapFreeRatio,但这只是猜测。更有趣的是,GC将成熟代减少到大约2%,但从未减少为堆分配的内存。

  • 颤动新手试图做一个注册和登录屏幕^_^" > 不会出现注册和登录中输入的无效/不完整详细信息的错误通知文本。这应该出现在注册/登录按钮之前。 当我尝试运行“打印登录”页面时,屏幕上什么也没有发生。