如何在XML文件中添加换行(换行符)?

44

我有一个XML文件,我想在文本"Sample Text 123"中换行,就像这样

Sample
Text 123

我已经尝试了所有的方法,包括 &#xA &#xD \n,但都没有起作用:

    <?xml version="1.0" encoding="UTF-8" ?>
    <item>
        <text>Address</text>
        <data>
            Sample &#xA; Text 123
        </data>
    </item>
1个回答

72

换行符(也称为换行符行尾标记EOL)是一种特殊字符或字符序列,用于标记文本行的结尾。在不同的操作系统中,使用的确切代码不同:

操作系统 行尾标记
Unix LF
Mac OS 版本 9 及以下 CR
Windows,DOS CR+LF

您可以使用&#xA;表示换行(LF),或&#xD;表示回车(CR),XML解析器将在将解析后的文本移交给应用程序时,将其替换为相应的字符。这些可以手动添加,就像您在示例中展示的那样,但当需要在字符串内以编程方式添加换行时,它们特别方便:

  • 常见的编程语言:
    • LF"&#xA;"
    • CR"&#xD;"
  • XSLT:
    • LF<xsl:text>&#xA;</xsl:text>
    • CR<xsl:text>&#xD;</xsl:text>

或者,如果您希望立即在XML中查看它,请直接将其放入文本中:

<?xml version="1.0" encoding="UTF-8" ?>
<item>
    <text>Address</text>
    <data>
        Sample
        Text 123
    </data>
</item>

换行符还是不显示?

请注意,如何解释文本(包括换行符)取决于应用程序。如果您发现换行符被忽略了,可能是因为应用程序自动将由换行符分隔的文本放在一起。

例如,HTML 浏览器会忽略换行符(并规范化文本内的空格,使多个空格合并)。要在 HTML 中断行,请使用:

  • 使用 <br/>;或者
  • 将块包装在元素中,例如默认情况下在封闭文本后会导致换行的 divp 元素中,或在默认情况下通常会保留空白和换行符的 pre 元素中;或者
  • 使用 CSS 样式,如white-space 来控制换行符的渲染。

XML 应用不配合?

如果 XML 应用程序不尊重您的换行符,并且在应用程序的处理模型内部工作没有帮助,则另一个可能的方法是使用 CDATA 来告诉 XML 解析器不要解析包含换行符的文本。

<?xml version="1.0" encoding="UTF-8" ?>
<item>
    <text>Address</text>
    <data>
        <![CDATA[Sample
                 Text 123]]>
    </data>
</item>

或者,如果下游识别了HTML标记:

<?xml version="1.0" encoding="UTF-8" ?>
<item>
    <text>Address</text>
    <data>
        <![CDATA[Sample <br/>
                 Text 123]]>
    </data>
</item>

这是否有所帮助将取决于XML处理流程中的一个或多个阶段的应用程序定义语义。

最重要的是

像在XML中添加任何字符一样,可以添加换行符(也称为换行行尾EOL),但要注意:

  • 不同的操作系统约定
  • 不同的XML应用程序语义

我也尝试过,但我的网页上的文本仍然在一行中。 - Christian
2
新线仍然没有显示出来? - kjhughes
都没有起作用。它本应该起作用的。XML 1.0与Excel。 - Scott Shaw-Smith
@ScottShaw-Smith:这更多是关于Excel而不是XML。尝试进行搜索,如果没有帮助,请提出一个新的Excel特定问题。 - kjhughes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接