xml - XML 中的换行符无效吗?

标签 xml

根据我在 XML 规范中发现的内容,以下 3 个字符是唯一非法的:

  1. &
  2. <
  3. >

我们正在与供应商合作开发一种工具,该工具似乎无法处理换行符。

例如

<Comments> This is line 1
This is line 2
</Comments>

将在工具中产生错误,而我得到的根本原因是 XML 中不允许换行符。规范中没有明确说明这一点。

我试图了解换行符是否确实是 XML 中的无效字符,或者这是否可能是该工具的限制。

最佳答案

您可能想询问格式良好、无效的 XML。 (有关差异的详细信息,请参阅 Well-formed vs Valid XML。)

格式良好的 XML 中肯定允许使用换行符。

  • &#13; ( #xA ) 是 CR
  • &#10; ( #xD ) 是 LF

(Windows 通常以 CR+LF 结束行;MacOS X 和 Linux,LF;经典 Mac OS,CR。)

XML 建议书确实明确允许两者。请参阅Character Range :

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

常见用法

在元素内,新行通常对应用程序很重要:

<a>one
two</a>

通常意味着不同于

<a>one two</a>

在标记之间,新行通常无关紧要:

<a>
   <b>one</b>
</a>

通常含义相同

<a><b>one</b></a>

其他角色

最后,你说&的笔画有些草率。 , < ,和>是非法的。相反,请使用以下准则:

  • & :必须使用&amp;如果不是实体引用的一部分。
  • < :必须使用&lt;如果不是标签、评论、PI 等的一部分。
  • > :必须使用&gt; if 字符串 ]]> 的一部分.
  • ' :必须使用apos;如果在由 ' 分隔的属性值内.
  • " :必须使用quot;如果在由 " 分隔的属性值内.

另请参阅

关于xml - XML 中的换行符无效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460550/

相关文章:

java - 如何在 Android 上使用 tabHost

php - 在 NuSOAP 上创建重复标签

c# - 使用 Linq 一般展平 XDocument?

xml - 在Delphi 10.1中生成XML文件并执行基本的XML操作?

java - 如何从 XML 转换为 Java,反之亦然?

java - 手动创建所有 Document 节点的 NodeList

c# - 如何使用 LINQ to XML 从示例 XML 中获取值

xml - 如何在 XQuery 中获取计算值的最大值?

python - 如何使用Python的ElementTree获取child的子元素

XML - 文档不能包含多个根元素