我有XML文件,我只需删除1个属性。
保存已编辑的XML后,删除了空格,这是我需要的! (见图)
我何时会失去空白?
当我在doc中解析xml时? 或者当我转换回xml?
我已经在Java Transformer中使用了很多输出属性,如:
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes");
transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "RequestMessage Code");
避免其他格式化问题。
有没有办法保留空白?
谢谢
编辑1:XSL我用来避免按字母顺序排列
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt" version="2.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" xalan:indent-amount="2"/>
<!--Identity transformation (see http://www.w3.org/TR/xslt#copying).-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@Item"/>
<xsl:apply-templates select="@Name"/>
<xsl:apply-templates select="@Include"/>
<xsl:apply-templates select="@Variant"/>
<xsl:apply-templates select="@Authorization"/>
<xsl:apply-templates select="@Alias"/>
<xsl:apply-templates select="@Source"/>
<xsl:apply-templates select="@Field"/>
<xsl:apply-templates select="@DgMemberName"/>
<xsl:apply-templates select="@DgGroupName"/>
<xsl:apply-templates select="@Target"/>
<xsl:apply-templates select="@Host"/>
<xsl:apply-templates select="@DataGroup"/>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
我认为您的问题的答案是无法使用任何易于使用的XML序列化程序来完成。
我同情这个要求,因为我也有格式化的XML文件。但我认为这是一个非常罕见的用例,如果你想解决它,你需要编写自己的序列化器。