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

问题描述 投票:17回答:2

我有一个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>
xml newline
2个回答
22
投票

换行符(也就是换行符或行尾,EOL)是标记文本行结尾的特殊字符或字符序列。使用的确切代码因操作系统而异:

LF:    Unix
CR:    Mac OS up to version 9
CR+LF: Windows, DOS

您可以将&#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中的任何字符一样添加,但请注意

  • 不同的OS惯例
  • 不同的XML应用程序语义

-4
投票

https://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.newlineonattributes(v=vs.110).aspx

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
© www.soinside.com 2019 - 2024. All rights reserved.