gpt4 book ai didi

javax.xml.transform.Transformer 正在删除所需的空白(xml 到文本转换)

转载 作者:行者123 更新时间:2023-11-30 05:04:14 25 4
gpt4 key购买 nike

我正在尝试使用 javax.xml.transform 将 XML 转换为文本。 xsltproc 将正确地将我的 XML 转换为格式正确的文本,而以下代码生成的输出几乎删除了所有空格:

final ByteArrayOutputStream out = new ByteArrayOutputStream();

final InputStream is = getClass().getResourceAsStream( xslResourceName );
final StreamSource xsltSrc = new StreamSource( is );
final Transformer transformer = tFactory.newTransformer( xsltSrc );
final Source src = new StreamSource( new StringReader( xmlData ) );
final Result res = new StreamResult( out );

transformer.setOutputProperty( "method", "text" );
transformer.setOutputProperty( "omit-xml-declaration", "yes" );
transformer.transform( src, res );

return out.toString();

XSLT 有意使用以下标签添加空格:

<xsl:value-of select="substring(concat(concat($frontpadding,$cellvalue),$blank),1,$width)"/>

对于一个更大的示例,源 xml 可能具有:

<reportheader display="true">
<name>Hours01</name>
<date>2011-04-14</date>
<description>Hours Report</description>
<pagewidth>130</pagewidth>
</reportheader>

xsl 具有:

<xsl:template match="reportheader">
<xsl:if test="@display='true'">
<xsl:variable name="col1width" select="12"/>
<xsl:variable name="datewidth" select="10"/>
<xsl:variable name="col2width" select="$pagewidth - $col1width - $datewidth"/>
<xsl:copy-of select="substring(concat(name,$blank),1,$col1width)"/>
<xsl:copy-of select="substring(concat(description,$blank),1,$col2width)"/>
<xsl:copy-of select="substring(concat(date,$blank),1,$datewidth)"/>
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
</xsl:template>

xsltproc 输出是:

Hours01     Hours Report                                                                                                2011-04-14

javax.xml.transformer.Transformer 输出是:

Hours01Hours Report2011-04-14

最佳答案

你是如何定义$blank的?当我这样做时

<xsl:variable name="blank">                                  </xsl:variable>

我得到的结果和你一样。然而,以下产生了您想要的结果

<xsl:variable name="blank" select="'                                                '"/>

关于javax.xml.transform.Transformer 正在删除所需的空白(xml 到文本转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5666488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com