- 浏览: 195222 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (231)
- C++学习 (41)
- vc学习 (25)
- vc异常 (4)
- Flex (2)
- Ext (0)
- java学习笔记 (15)
- mysql学习笔记 (1)
- ibatis学习笔记 (7)
- struts1学习笔记 (1)
- hibernate学习笔记 (3)
- javascript学习笔记 (8)
- eclipse快捷键 (2)
- 英语学习 (1)
- cmd (1)
- eclipse 配置 (2)
- 其他 (4)
- JAVASE (34)
- firefox (1)
- linux (8)
- Apache (6)
- cms (22)
- jsuc (10)
- html (3)
- css (1)
- 作图 (2)
- vs2012 (2)
- 编码转换 (12)
- work_unicode (1)
- work_webbrowser (1)
- work_trade_quotes_login (1)
- c#学习 (38)
- wpf学习 (31)
- wpf快速学习 (1)
- VB学习 (1)
- NSIS (4)
- log4cpp (3)
- 学习web (1)
- 经验 (1)
- c_汇编 (1)
最新评论
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.  
因为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 (	)
回车 (
)
换行 (
)
<sys:String x:Key="sys_explain_info" xml:space="preserve">说明:1、修改结束之前,该合约的止损止盈功能已暂停
2、止损止盈由本软件在用户本机实现,如遇网络断线或软件关闭则失效。
3、止损止盈不能保证以指定价成交。</sys:String>
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.  
因为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 (	)
回车 (
)
换行 (
)
<sys:String x:Key="sys_explain_info" xml:space="preserve">说明:1、修改结束之前,该合约的止损止盈功能已暂停
2、止损止盈由本软件在用户本机实现,如遇网络断线或软件关闭则失效。
3、止损止盈不能保证以指定价成交。</sys:String>
发表评论
-
byte数组直接输出
2016-07-19 11:38 1203byte数组直接输出 BitConverter.ToStrin ... -
wfi:WindowsFormsHost焦点设置
2016-07-05 17:56 526<wfi:WindowsFormsHost> ... -
x:Name
2016-04-25 10:44 411由于“Dameer”是在同一程序集中实现的,您必须设置 x:N ... -
WindowsFormsHost的使用注意
2016-04-25 10:24 1279一使用 1 引用 2 xmlns:wfi ="clr ... -
TextBox滚动条
2016-04-22 16:51 613<TextBox Grid.Row="1& ... -
TextBlock滚动条
2016-04-22 16:49 403<ScrollViewer Name="s ... -
C#_WPF_WPF用户控件库
2016-04-12 11:37 757新建项目》window桌面》WPF用户控件库 -
DependencyProperty.UnsetValue_WPF涉及到资源的嵌套引用,被引用的资源要定义在引用的资源前面
2015-10-27 15:09 1907错误 1 “{DependencyProperty.Unset ... -
string格式的日期时间字符串转为DateTime类型
2015-08-05 14:22 915string格式的日期时间字符串转为DateTime类型 / ... -
checkbox
2015-07-28 17:18 500private void Chec ... -
自定义DataGrid样式
2015-06-26 22:03 703<ResourceDictionary xmlns=&q ... -
x:Name x:Key Name区别
2015-06-25 15:40 554x:Name x:Key Name区别 1、x:Key 只 ... -
work_代码添加
2015-06-23 17:15 468<UserControl x:Class=" ... -
FindName和VisualTreeHelper
2015-06-19 13:23 717int iCount = this.dataGridCan ... -
理解WPF中的视觉树和逻辑树(转载)
2015-06-19 13:00 554理解WPF中的视觉树和逻辑树 理解WPF中的 ... -
理解WPF中的视觉树和逻辑树(转载)
2015-06-19 12:58 1595理解WPF中的视觉树和逻 ... -
GetEnumerator
2015-06-19 12:39 608IEnumerator enumerator = this ... -
资源文件获取配置
2015-06-18 16:03 339object obj = Application.Curren ... -
Pack URI
2015-06-18 15:41 648主要用来定位 资源文 ... -
wpf学习之ObservableCollection<T>相关知识
2015-04-23 11:10 3264本篇学习了ObservableCollection<T& ...
相关推荐
解析XML特殊字符方法有二种 XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符
xml中的一点特殊字符的转换 写xml常用的特殊字符
HTML和XML中的转义字符
xml转javaBean,javaBean转xml,xml标签大小写问题,CDATA的生成,以及对xml特殊符号的处理
HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),... 不合法的XML字符必须被替换为相应的实体。 如果在XML文档中使用类似"的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始
本文介绍的正是如何使用C#判断XML字符串是否含特殊字符并进行转换。 以下是几个特殊字符的对应实体。 < < 小于号 > > 大于号 & & 和 ' ‘ 单引号 "...
对XML文档进行格式化(换行,缩进),C#的很简单
在res/string.xml中添加特殊的字符,需用转移字符
Mybatis在Mapper.xml文件中对大于、小于、大于等于、小于等于等符号进行转义字符处理的几种方式
Tinyxml不能读取的字符 要转义-可以查百度文库
在安卓开发中我们经常会遇到一些特殊字符,这些特殊字符在程序中无法直接写,那么如何显示这些字符呢?...以下为部分XML标志符的数字和字符串转义符: “ 双引号 ( 或 ) ‘ 单引号 (' 或 ') &
java 写的转pdf代码,支持表格内容的中文换行,css样式随意设置。源代码亲测好用
w3c 生成xml 换行实例w3c 生成xml 换行实例
特殊字符(\,_,%)转义工具类 MyQueryInterceptor.java: Mybatis自定义拦截器 注意:该拦截器只支持QueryWrapper的like方法,serviceImpl层传全角模糊查询(%%) mapper或xml层的全角模糊查询(%*%)和半角模糊查询(%*或*%)
涉及知识点:word转xml、xml转字符串、doc转docx 此处主要试讲word文件转换,之前的替换只能替换正文,此处可进行全部替换,像脚注等,都可进行
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。
将Excel表格中的信息按一定规则(如关键字分组)输出为xml文件,一般情况下生成的xml文件用文本形式代开不会有缩进与换行,本工具解决了此问题。本工具中生成的RemotePhonebook.xml是根据department分组,同一...
实现 XML字符串转VO对象的实现 1.0:标签读取,属性读取,List类型标签实现 以下是 测试说明 原XML: <?xml version="1.0" encoding="UTF-8"?> <HEADER NAME="HEADERname" name_cn="头名称">标签text...
在xml中,有一些符号作为XML 的标记符号,一些特定情况下,属性值必须带有这些特殊符号。 下面主要是讲解一些常用的特殊符号的处理