`

XML特殊字符和空格 换行 转义符(转)

 
阅读更多
XML特殊字符和空格 换行 转义符

xmlwhitespacestringtextbox
由于XAML是一种XML,在里面写段文字都经常会遇到问题。
* 空格
关于XAML中是如何处理空格的,MSDN上给出了详细的描述:http://msdn.microsoft.com/en-us/library/cc189036%28v=VS.95%29.aspx#whitespace
摘重要的简单说一下:
1. 空格、回车、制表符都被当做空格。
2. 连续的空格会被合并为一个空格。
3. <tag>后紧邻的空格会被忽略。</tag>前紧邻的空格会被忽略。换句话说,解析器对<tag>…</tag>中间的字符串做Trim。
如何保留空格
1. 给元素加上属性 xml:space="preserve"
设置了这个属性之后,会保留元素中所有的空格,不会合并连续空格,也不会trim两头的空格。
这个方法有个不便,就是它会保留元素中所有的空格,哪怕这些空格是由代码格式规整化后产生的。这就意味着,你不能用ctrl+E,F这样的快捷键来整理代码格式了,一旦不小心整理了,改回来都很麻烦。
2. &#160;
因为XAML支持直接写Unicode代码,这串代码代表一个non breaking space.
复杂的文本
带有复杂格式的文本,建议使用RichTextBox。
因为文本元素分为block和inline两种,TextBlock仅允许包含inline,所以用来展示少量的文本比较合适。
如果格式比较复杂,注意用好span,span与run的不同在于,span不会继承父元素的格式,相当于重置格式,不受父元素格式的影响。

* 换行
在XAML中输入回车会被当做一个空格,所有换行要用<LineBreak/>。
另外,两个Run相邻,如果是如下排列:
<Run>ab</Run>
<Run>cd</Run>
则显示成:
ab
cd
会自动在两个Run之间加上换行符。
如果要让回车去掉,显示成abcd,则应该写在一行里:
<Run>ab</Run><Run>cd</Run>

* Tab
首先,XAML中没有tab,只能用连续的空格来代替。
需要注意,在将一个string赋值给RichTextBox的Xaml属性时,会合并掉连续的空格,所有如果要保留tab(连续的空格),需要进行这样一个workaround:
private const string TAB = "    ";
private const string TAB_PLACEHOLDER = "===TAB===";

textBox1.Text = richTextBox1.Xaml;
string xaml = richTextBox1.Xaml;

xaml = xaml.Replace(TAB, TAB_PLACEHOLDER);

richTextBox2.Xaml = xaml;

foreach (Block block in richTextBox2.Blocks)
{
    foreach (Inline inline in ((Paragraph)block).Inlines)
    {
        ((Run)inline).Text = ((Run)inline).Text.Replace(TAB_PLACEHOLDER, TAB);
    }
}
先用一个占位符来代替四个空格,这样在给richTextBox的xaml属性赋值的时候就不会合并空格了。
然后再替换这个占位符,赋完值替换的时候不会进行合并。
==================================================
XAML被XML规则绑定。例如XML对几个特殊字符有特别意义,像&,<,>。如果你尝试用这些值来设置一个元素的内容,你可能会出错,因为XAML解析器假设你正在试图做某些事情,比如创建嵌套元素。你可以使用字符实体,例如<用&lt;,>用&gt;,&用&amp;,"用&quot; 特殊字符不是你运行XAML的一障碍,另外一个是空格处理。一个字符串前,后,字符串中的空格,TAB,回车键都会被忽视掉,只保留一个空格。你可以使用XML:space="preserve",保留任何空格,TAB,回车键。注意,这些规则只对XAML有用,如果你在代码中设置内容,任何空格都会保留。

特殊字符和空格
下面的字符在 [XML]中被定义为 空白(whitespace)字符:
空格 (&#x0020;)
Tab (&#x0009;)
回车 (&#x000D;)
换行 (&#x000A;)

<sys:String x:Key="sys_explain_info" xml:space="preserve">说明:1、修改结束之前,该合约的止损止盈功能已暂停
          2、止损止盈由本软件在用户本机实现,如遇网络断线或软件关闭则失效。
          3、止损止盈不能保证以指定价成交。</sys:String>
分享到:
评论

相关推荐

    HTML和XML中的转义字符

    3. **转义字符通常用于替换特殊符号**:如上述提到的“&”、“&lt;”、“&gt;”等,以避免语法上的混淆。 4. **注意转义字符的兼容性**:不同版本的HTML可能支持不同的转义字符集。例如,HTML4和HTML5对实体的支持有所不同...

    xml 的特殊字符的处理方法

    除了上述的转义字符外,XML还支持预定义的实体引用,如 `nbsp;`(非换行空格)、`amp;`(与符号)、`lt;`(小于号)、`gt;`(大于号)和`quot;`(双引号)。这些实体可以用于插入对应的特殊字符,而不是直接使用它们...

    处理ajax返回带有换行的json数据

    JSON规范要求数据应该是有效的JavaScript语法,这意味着JSON字符串不能包含某些特殊字符,包括未经转义的换行符。在JSON字符串中,换行通常应被转义为`\n`。如果从Ajax请求中接收到的JSON数据包含了未转义的换行符,...

    Android常见XML转义字符(总结)

    为了在XML中表示这些特殊字符,我们需要使用转义字符。下面是对Android开发中常见XML转义字符的详细解释: 1. 双引号 (`"`):在XML中,双引号用于包围属性值。如果要在文本中直接使用双引号,需要使用转义序列 `"` ...

    5、CDATA 和转义字符1

    XML提供了两种方式来处理这些问题:转义字符和CDATA(Character Data)块。 1. 转义字符: - "&" 转义为 "&amp;" - "转义为 "&lt;" - "&gt;" 转义为 "&gt;" - """(双引号)转义为 "&quot;" - '''(单引号)转义...

    C#-转义字符-EscapeChar

    在实际开发中,转义字符不仅限于上述用途,它们还可以在正则表达式、XML和JSON等数据格式中发挥作用。例如,如果你正在编写一个正则表达式,可能需要转义特殊字符以确保它们被当作普通字符处理,而不是正则表达式的...

    学习java开发中的特殊字符.pdf

    XML也有自己的特殊字符转义规则,与HTML类似,但`'`单引号的转义字符是`&apos;`。在XML中,任何类似于`的字符都会导致解析错误,因此需要转义为`&lt;`。例如,正确的写法是`&lt;message&gt;if salary &lt; 1000 then...

    XML格式化工具

    其次,处理特殊字符,如将"&"转义为"&amp;",确保XML的合法性;最后,根据用户需求,可能还包括调整输出格式,比如控制缩进的空格数、是否保留空白等。 总的来说,这款XML格式化工具提供了方便快捷的方式对XML文档...

    xml基础学习笔记

    6. 回车换行和空格的处理:在 XML 中回车和换行被作为原始的处理。 7. CDATA 区:CDATA 是 character data 的缩写,即字符数据。CDATA 是指不想被程序解析的一片原始数据区,以”&lt;![CDATA[”开始,以”]]&gt;”结束。 ...

    存储于xml中需要的HTML转义代码

    这个函数重新对`和`&gt;`进行转义,保证在XML文档中这些特殊字符能够被正确解析。 在编写HTML转义逻辑时,必须注意转义规则的正确性和完整性,确保所有潜在的HTML或JavaScript特殊字符都能被正确转义。不同的应用场景...

    xml基础教程(非常经典)

    5. **空格和换行处理**:默认情况下,XML会压缩连续的空白字符,但可以通过使用`xml:space="preserve"`属性保持空白。 6. **CDATA区**:`&lt;![CDATA[ 这里是不被解析的文本 ]]&gt;`,用于包含非XML格式的文本,防止特殊...

    HTML特殊符号

    此外,还有一些其他字符,如引号(单引号`'`和双引号`"`),也具有特殊的含义,当它们出现在属性值中时,需要用相应的特殊符号代替。 #### 实体引用 实体引用是一种用于表示特殊字符的方法,通常由一个与该字符...

    day023-xml解析笔记和代码.rar

    1.Xml中空格和换行都表示数据,严格区分大小写 1.4 XML约束:(了解) 1. 概念:就是限制一个XML文件中标签和属性等的使用,只能按照某种规则书写 便于其他程序员学习。 2. 作用: 1. ...

    2022年HTML语言剖析(十四)特殊字符CSSHTML教程.docx

    在HTML语言中,特殊字符是用于插入那些不能直接在键盘上输入或者有特殊含义的字符。这些字符通常通过实体名称...在准备相关的IT考试时,这部分知识是必不可少的,因为网页设计和开发经常会涉及到这些特殊字符的使用。

    给textview添加空格共1页.pdf.zip

    在XML字符串资源中,可以这样写: ```xml &lt;string name="example_text_nbsp"&gt;Hello\u00A0世界 ``` 在Java代码中,可以使用Unicode转义序列: ```java String nbsp = "\u00A0"; String combinedText = word1 + ...

    java版本的escape和unescape函数

    这两个函数主要用于在字符串中转换特殊字符,确保数据在网络传输或存储时的正确性和安全性。下面我们将深入探讨这两个函数的工作原理、使用场景以及它们在实际开发中的应用。 `escape`函数通常用于将字符串中的特殊...

    php源文件字符操作

    2. **字符串转义**:在字符串中嵌入特殊字符,如`\n`表示换行,`\t`表示制表符,`\"`表示双引号等。 3. **变量插入**:在双引号包围的字符串中可以直接插入变量,如`"My name is $name"`。 4. **字符串迭代**:通过`...

    制作手机网页的金钥匙——WML语法知识

    WML会忽略某些非显示字符,如换行、回车、空格和水平制表符,除非特殊指定。连续的这些字符会被压缩为一个空格。 ### 文件开头 每个WML页面都应以XML声明开始,接着是DOCTYPE声明,用来定义WML DTD(文档类型定义...

Global site tag (gtag.js) - Google Analytics