【问题标题】:Represent space and tab in XML tag?表示 XML 标记中的空格和制表符?
【发布时间】:2010-10-05 14:30:46
【问题描述】:

如何在 XML 标签中表示空格和制表符?

有什么特殊的字符可以代表它们吗?

【问题讨论】:

    标签: xml tags special-characters w3c


    【解决方案1】:

    我认为您可以直接在 XML 文档中使用实际的空格或制表符,但是如果您正在寻找特殊字符来表示它们以便文本处理器不会弄乱它们,那么它是:

    space =  
    tab   = 	
    

    【讨论】:

    • ...如果你想要一个不间断的空间,你也可以使用  
    • tab = 对我不起作用,对于 Enter 键它的 ,没有数字
    • 在哪里可以找到这些“特殊字符”的列表,它们叫什么?
    【解决方案2】:

    为我工作

    \n = 

    \r = 
    \t = 	
    space =  
    

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

    <KeyWord name="hello&#x9;" />
    

    【讨论】:

    • 尝试其他现有的解决方案,我很久以前做过,所以无法确认为什么它不起作用......
    【解决方案3】:

    对旧的常见问题的新扩展答案...

    XML 组件名称中的空格

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

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

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

    这些代码点中没有一个W3C XML BNF for XML names 允许:

    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 BNF for Char 允许在 XML 内容中使用上述所有空白代码点:

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

    Unicode 代码点可以插入为character references。十进制 &amp;#decimal; 和十六进制 &amp;#xhex; 都支持。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          <my-xml-element><![CDATA[&#x20;]]></my-xml-element>
          

          【讨论】:

            【解决方案7】:

            可以使用 Unicode UCS-2 对非法 XML 标记名称字符进行编码。这非常有效。我正在使用它来创建转换为 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",
            

            【讨论】:

              【解决方案8】:

              我遇到了同样的问题,以上答案都没有解决问题,所以我尝试了一些非常直接的方法:我刚刚输入了我的strings.xml\n\t

              完整的字符串看起来像这样&lt;string name="premium_features_listing_3"&gt;- Automatische Aktualisierung der\n\tDatenbank&lt;/string&gt;

              结果:

              • 自动化操作

                数据银行

              (中间没有多余的线)

              也许它会帮助别人。问候

              【讨论】:

                猜你喜欢
                • 2010-09-09
                • 1970-01-01
                • 1970-01-01
                • 2012-02-25
                • 2019-12-03
                • 2017-07-31
                • 1970-01-01
                • 1970-01-01
                • 2011-09-26
                相关资源
                最近更新 更多