XML特殊字符和空格 换行 转义符的代码详细介绍

关于XAML中是如何处理空格的,MSDN上给出了详细的描述:http://msdn.microsoft.com/en-us/library/cc189036%28v=VS.95%29.aspx#whitespace
摘重要的简单说一下:
空格、回车、制表符都被当做空格。
连续的空格会被合并为一个空格。
<tag>后紧邻的空格会被忽略。</tag>前紧邻的空格会被忽略。换句话说,解析器对<tag>…</tag>中间的字符串做Trim。
如何保留空格
给元素加上属性 xml:space=preserve
设置了这个属性之后,会保留元素中所有的空格,不会合并连续空格,也不会trim两头的空格。
这个方法有个不便,就是它会保留元素中所有的空格,哪怕这些空格是由代码格式规整化后产生的。这就意味着,你不能用ctrl+E,F这样的快捷键来整理代码格式了,一旦不小心整理了,改回来都很麻烦。

因为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解析器假设你正在试图做某些事情,比如创建嵌套元素。你可以使用字符实体,例如<用<,>用>,&用&,用 特殊字符不是你运行XAML的一障碍,另外一个是空格处理。一个字符串前,后,字符串中的空格,TAB,回车键都会被忽视掉,只保留一个空格。你可以使用XML:space=preserve,保留任何空格,TAB,回车键。注意,这些规则只对XAML有用,如果你在代码中设置内容,任何空格都会保留。
特殊字符和空格
下面的字符在 [XML]中被定义为 空白(whitespace)字符:
空格 ( )
Tab ( )
回车 ( )
换行 ( )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇