54

How can space and tab be represented in an XML tag?

Are there any special characters that can represent them?

4

8 回答 8

66

I think you could use an actual space or tab directly in XML document, but if you are looking for special characters to represent them so that text processors can't mess them up, then it's:

space =  
tab   = 	
于 2009-02-05T05:13:37.030 回答
26

为我工作

\n = 

\r = 
\t = 	
space =  

这是一个关于如何在 XML 中使用它们的示例

<KeyWord name="hello&#x9;" />
于 2013-06-18T05:38:11.093 回答
21

对一个老的、常见的问题的新的、扩展的答案......

XML 组件名称中的空格

摘要: XML 元素或属性名称中不允许使用空格字符。

以下是与空格相关的主要 Unicode 代码点:

  • #x0009字符表
  • #x0020空间
  • #x000A换行 (LF)
  • #x000D回车 (CR)
  • #x00A0无休息空间
  • [#x2002-#x200A]EN SPACE 到 HAIR SPACE
  • #x205F中等数学空间
  • #x3000表意空间

W3C XML BNF不允许这些代码点用于XML 名称:

NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] |
                  [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] |
                  [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
                  [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                  [#x10000-#xEFFFF]
NameChar      ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] |
                  [#x203F-#x2040]
Name          ::= NameStartChar (NameChar)*

XML 内容中的空格(不是组件名称)

简介: 当然,在 XML 内容中允许使用空白字符。

W3C XML BNFChar允许在 XML 内容中使用上述所有空白代码点:

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
/* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */

Unicode 代码点可以作为字符引用插入。支持十进制&#十进制;和十六进制十六&#x进制;形式。

  • 十六进制  Unicode  名称
  • &#x09;   或   &#09;     字符表
  • &#x0A;   或   &#10;     换行 (LF)
  • &#x0D;   或   &#13;     回车 (CR)
  • &#x20;   或   &#32;     空间
  • &#xA0;   或   &#160;   无休息空间
于 2017-10-09T00:10:17.350 回答
9

您不能在 XML 元素的标记(即名称)中包含空格和制表符,请参阅规范:http ://www.w3.org/TR/REC-xml/#NT-STag 。除字母数字字符外,名称中允许使用冒号、下划线、破折号和点字符,且首字母不能是破折号或点。某些 unicode 字符也是允许的,实际上没有仔细检查,我会说这些是国际字母。

于 2009-02-05T09:45:07.120 回答
3

如果您正在谈论从属性值中专门去除多个和非空格空白字符的问题,那么是的,将它们编码为字符引用,例如 会修复它。

于 2009-02-05T12:33:52.583 回答
2

对我来说,为了让它工作,我需要在 CDATA xml 元素中编码空间的十六进制值,以便解析后它加起来就像在 htm webgae 中一样,在浏览器中查看时只显示一个空格!。(以上所有想法和答案都很有用)

<my-xml-element><![CDATA[&#x20;]]></my-xml-element>
于 2014-12-10T12:48:00.043 回答
2

非法 XML 标记名称字符可以使用 Unicode UCS-2 进行编码。这非常有效。我正在使用它来创建转换为 json 的 XML(与 XPath 相比,JPath 较弱)。注意空格、(,) 字符的处理。 Unicode UCS-2 代码表: http: //www.columbia.edu/kermit/ucs2.html

        tag.Name = tag.Name.Replace(" ", "_x0020_");
        tag.Name = tag.Name.Replace("(", "_x0028_");
        tag.Name = tag.Name.Replace(")", "_x0029_");

XML:

  <Internal_x0020_Chargeback_x0020_ID>{CHARGEBACKCODE}</Internal_x0020_Chargeback_x0020_ID>
  <Bill_x0020_To>{CHARGEBACKCODE}</Bill_x0020_To>
  <Operator_x0020_or_x0020_Directly_x0020_Responsible_x0020_Individual_x0020__x0028_DRI_x0029_>zzz@yyy.gov</Operator_x0020_or_x0020_Directly_x0020_Responsible_x0020_Individual_x0020__x0028_DRI_x0029_>

通过 json.net 转换为 json:

    "Internal Chargeback ID": "{CHARGEBACKCODE}",
    "Bill To": "{CHARGEBACKCODE}",
    "Operator or Directly Responsible Individual (DRI)": "xxx@yyy.gov",
于 2019-06-10T14:26:32.803 回答
1

我遇到了同样的问题,以上答案都没有解决问题,所以我尝试了一些非常简单的方法:我只是把我的strings.xml \n\t

完整的字符串如下所示<string name="premium_features_listing_3">- Automatische Aktualisierung der\n\tDatenbank</string>

结果是:

  • 自动化操作

    日期银行

(中间没有多余的线)

也许它会帮助别人。问候

于 2014-11-05T23:07:33.893 回答