漂亮的打印 XML 文件

2024-01-10

原始问题

我正在尝试在没有任何外部库的情况下漂亮地打印 XML 文件,但无法让 Java 执行我想要的操作...这是到目前为止我的代码(我添加了类似问题的任何解决方案!):

TransformerFactory tfactory = TransformerFactory.newInstance();
tfactory.setAttribute("indent-number", 4);
Transformer transformer = tfactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, "text/xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "4");
transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT, "4");
File file = new File("C:\\text.xml");
DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file));
transformer.transform(source, new StreamResult(file));

输入文件如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><root><test><item0>a</item0><item1>b</item1></test></root>

我收到如下输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>

<test>
<item0>a</item0>
<item1>b</item1>
    </test>
</root>

现在我不明白的是为什么后面有一个空行<root>和前面的缩进</test>,但没有其他地方。在这个新文件上运行代码没有任何改变!

我希望我的输出文件如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
    <test>
        <item0>a</item0>
        <item1>b</item1>
     </test>
 </root>

Update

我从代码中删除了一些显然没有做任何事情的行:

TransformerFactory tfactory = TransformerFactory.newInstance();
tfactory.setAttribute("indent-number", 4);
Transformer transformer = tfactory.newTransformer();
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "4");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
File file = new File("C:\\text.xml");
DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file));
transformer.transform(source, new StreamResult(file));

现在,这会根据原始问题的单行文件创建一个漂亮的打印文件,以便回答该问题的一部分!我不知道到底是什么问题,但无论如何,现在可以了^^

但我也有一些由我的程序读取和写入的旧文件,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<test>
<item0>a</item0>
<item1>b</item1>
</test>
</root>

它们在每个节点后都有一个换行符,但没有缩进。我的代码使文件保持不变...我该如何纠正这个问题?


您已标记此 XSLT,并且如果应用以下 XSLT 样式表:

XSLT 1.0

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
exclude-result-prefixes="xalan">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" xalan:indent-amount="4"/>

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

对于您的 XML 输入,结果将是:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <test>
        <item0>a</item0>
        <item1>b</item1>
    </test>
</root>

现场演示:http://xsltransform.net/ncdD7mg http://xsltransform.net/ncdD7mg

请注意,这些项目“打印得很漂亮”,如下所示:

<item0>a</item0>

而不是如您的帖子中所示:

<item0>
    a
</item0>

这将表示 XML 内容负载的变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

漂亮的打印 XML 文件 的相关文章

随机推荐

  • 将反应测试库与故事镜头一起使用?

    是否可以将反应测试库与故事书故事镜头插件一起使用 我想对不使用酶的反应成分进行一些测试 对你来说可能有点晚了 但我只是在研究这个确切的问题 这是我想出的配置 它似乎对我有用 import initStoryshots from storyb
  • 部署在 Kubernetes 仪表板中不可见

    我创建了这样的部署 kubectl run my app image ecr us east 1 amazonaws com my app v1 l name my app replicas 1 现在我进入 Kubernetes 仪表板 h
  • 如何在 Windows 10 UWP 应用程序中使用 mysql

    我正在尝试将 mysql 与 Windows 10 UWP 应用程序一起使用 我到处都被告知要下载连接器 NET并引用Assemblies rt MySql Data RT dll 然而 在下载了 mysql 网站上可用的每个连接器后 我无
  • 有谁知道ShellHook消息HSHELL_RUDEAPPACTIVATED是什么意思?

    我正在编写建立 shell 挂钩来获取 shell 事件的应用程序 如果重要的话 我正在使用 C 我正在使用这个例子 http msbob spaces live com blog cns DAFD19BC5D669D8F 132 entr
  • Pandas:在数据框中存储数据框

    我对 Pandas 相当陌生 目前在尝试在 Dataframe 中插入 Dataframe 时遇到了问题 我想做的事 我有多个模拟和相应的信号文件 我希望将它们全部放在一个大的 DataFrame 中 所以我想要一个 DataFrame 其
  • java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:1

    我正在学习Java 我不知道这里出了什么问题 为什么会发生这个错误 我没有看到任何错误 直到我在第二个 for 循环之前写下 count 0 行之前 这实际上是有效的 这就是错误 java lang StringIndexOutOfBoun
  • 在 SOLR 中动态创建新的核心目录

    我正在使用 solr 1 4 1 构建分布式搜索引擎 但我不想只使用一个索引文件 我想在我的 java 代码中动态创建新的核心 索引 目录 我发现下面的其余 API 可以使用以下方法创建新核心EXISTING核心目录 http wiki a
  • Java EE 组件之间的通知

    我有一个设计问题 我的应用程序有多个 Java EE 组件 简单来说 一个充当服务提供者 非 UI 其他充当消费者 UI webapp 消费者在启动期间从服务提供者获取配置数据 这基本上是从数据库读取数据 并将其存储在缓存中 缓存会在定期时
  • 如果子字符串重叠,如何计算Python中子字符串的数量?

    The count 函数返回子字符串在字符串中出现的次数 但在字符串重叠的情况下会失败 假设我的输入是 我想找出多少次 出现在字符串中 mystr input happy mystr count sad mystr count print
  • LDAP DN/RDN 长度限制

    有谁知道 win08r2 或 08 上 DN 或 RDN 的最大长度是多少 我从网上搜了一下 有人说 RDN length max tree search DN length lt is it true 因为我无法验证 ref http t
  • heroku .css 上的 Rails 3.1 部署不是预编译错误

    Update 我收到此错误是因为我有一个 public css 和 public js 文件 该文件未与其余 css 和 js 文件一起编译 解决方案是将这一行添加到 Production rb 文件中 Precompile additio
  • PayPal mc_gross 格式号码?

    我正在编写 php iPN 脚本 但我被 mc gross 检查困住了 我以这种格式 不是数字格式 将金额存储在数据库中 1000 100 10000 paypal 如何将 mc gross 值发回给我 以数字格式 我的意思是这样的 1 0
  • IE 11 中的 Bootstrap 4 对齐

    我正在将我的网站之一从 AngularJs Bootstrap 3 转换为 Angular 6 Bootstrap 在 Chrome 和 Firefox 以及 edige 中 我的模式如下所示 然而 在IE11中 代码 div class
  • 为什么C++中找不到向量

    还有什么选择 我应该自己写吗 有的是std find 算法 它在迭代器范围内执行线性搜索 例如 std vector
  • 设置 JFree Chart 图例边框颜色

    问题已在标题中阐述 细节 我在类主题中有代码 用于为图例框架的边框设置特定的非默认颜色 LegendTitle legend jFreeChart getLegend legend setWidth 100 之后我需要设置图例边框的颜色 但
  • PHP 是否有“命名参数”,以便可以省略前面的参数并可以写入后面的参数? [复制]

    这个问题在这里已经有答案了 在 PHP 中 您可以调用不传入任何参数的函数 只要参数具有如下所示的默认值 function test t1 test1 t2 test2 t3 test3 echo t1 t2 t3 test 但是 假设我希
  • SOAP 方法参数中的数组通过 JAX-WS 生成?

    我正在使用 JAX WS 注释用 Java 构建 SOAP 服务 除此之外 我想知道如何在我的方法中注释数组参数 当我从带注释的接口生成 wsdl 然后再次从该 wsdl 生成 java 类时 我这样做是为了测试 在这两种情况下都使用 Ap
  • 使用 D3.min 查找非 0 的最小值

    我正在尝试使用 D3 来查找数据集中的最低值 但是 我也有 0 的值 但我希望 D3 找到非 0 的最小值 目前我正在使用 d3 min data function d return d houseValues 但显然 当找到 0 时 有时
  • 每次安装组件时,React hook useEffect 都会导致初始渲染

    我是 React hooks 的新手 所以 我想用 React hooks 实现 componentWillReceiveProps 我像这样使用 React useEffect React useEffect gt console log
  • 漂亮的打印 XML 文件

    原始问题 我正在尝试在没有任何外部库的情况下漂亮地打印 XML 文件 但无法让 Java 执行我想要的操作 这是到目前为止我的代码 我添加了类似问题的任何解决方案 TransformerFactory tfactory Transforme