xml中的非法字符

今使用Jdom生成xml文件的时候,总是出现0x0,0x8为非法字符,经过搜索,问题原因及解决方法如下:

原因:

xml中需要过滤的字符分为两类,一类是不允许出现在xml中的字符,这些字符不在xml的定义范围之内。另一类是xml自身要使用的字符,如果内容中有这些字符则需被替换成别的字符。

第一类字符:

对于第一类字符,我们可以通过W3C的XML文档来查看都有哪些字符不被允许出现在xml文档中。

XML允许的字符范围是“#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]”。因此我们可以把这个范围之外的字符过滤掉。

需要过滤的字符的范围为:

\\x00-\\x08

\\x0b-\\x0c

\\x0e-\\x1f

第二类字符:

对于第二类字符一共有5个,如下:

字符                HTML字符        字符编码

和(and) &        &            &

单引号  ’
'            '

双引号  ”          "            "

大于号  >        >                  >

小于号  <        &lt;                   <

我们只需要对这个五个字符,进行相应的替换就可以了

解决方法:

用正则表达式替换,

用正则表达式表示如下:[<>&‘\"\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]

时间: 2024-08-02 23:23:02

xml中的非法字符的相关文章

XML中的非法字符转化成实体

问题 如果XML有非法字符比如 "·",或者HTML标签<br/>.XML在解析的过程中就会出错.就无法正常解析,或者把xml反射成实体. 有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的.要在HTML中显示(<)这个字符,我们就必须使用实体字符. 解决的办法 如果这些非法字符或者HTML标签不是我们需要的可以用striing.Replace("非法字符","

SVN版本冲突中 Files 的值“ &lt; &lt; &lt; &lt; &lt; &lt; &lt; .mine”无效路径中具有非法字符的解决办法

.NET 中 SVN版本冲突中 Files 的值“ < < < < < < < .mine”无效路径中具有非法字符的解决办法: 一. 1.将项目逐个进行编译,会弹出上面的错误,这时候将项目隐藏的文件全部显示,删除 /bin 和 /obj 目录,重新编译,这个时候上面的错误会减少,剩余几个错误,就说明有几个项目的编译出错. 2.继续按照方法一,去编译其他的项目.注意:删除/bin 和 /obj 目录后再编译. 二. 还有一个地方,也会导致这个错误,在项目文件中,就是

SVN提交出现“&lt; &lt; &lt; &lt; &lt; &lt; &lt; .mine’无效,路径中具有非法字符”的问题

使用SVN提交或更新后经常会出现”Files 的值’< < < < < < < .mine’无效.路径中具有非法字符”的错误.查阅了下资料,是因为:你更改了一个文件,服务器上相应的文件也改变了,于是文件不能自己合并.解决冲突.你需要自己确定使用哪一个文件.SVN进行管理时,把(与服务器上对应文件)不同的部分写入源文件或添加了以.mine..rs*后缀的文件.  解决方法:在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolut

Files 的值“ &lt; &lt; &lt; &lt; &lt; &lt; &lt; .mine”无效。路径中具有非法字符。

使用SVN进行更新的时候,出现了这样的问题:Files 的值“ < < < < < < < .mine”无效.路径中具有非法字符. 解决方法:解决冲突,告诉SVN这个问题已解决(Resolved).一般更简单些:在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有'<<<<<<< .mine'或类似的字段,重新编译即可. 如果没有成功,可以考虑直接把D

错误 1 Files 的值“&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine”无效。路径中具有非法字符。

Microsoft Visual Studio 2010项目编译的时候,提示如下错误: 错误 1 Files 的值"<<<<<<< .mine"无效.路径中具有非法字符. 解决办法: 在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有'<<<<<<< .mine'或类似的字段,重新编译即可.第一次尝试解决,没有成功,可以尝试直接把

Android studio中出现非法字符时的部分解决方法

我将原来在Eclipse中开发的工程搬到了Android studio上来,在运行,编译程序的过程中出现了错误.提示存在非法字符. 后来发现是由于程序代码中有中文字符的出现,问题就出在对中文支持的UTF-8编码上. utf-8编码分为BOM和非BOM两种格式.有bom头的存储或者字节流,它一定是unicode字符集编码.究竟属于那一种utf-8还是utf-16还是utf-32)可以通过BOM头来进行判断.在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码.UT

[C/C++标准库]_[初级]_[过滤Windows文件名中的非法字符]

场景: 1. 通常生成文件时需要一个文件名,而生成文件名的方式可能是通过用户输入的字符,但是有些字符在windows上是不能作为文件名的,强行创建这类文件会失败. 2.一般可以通过正则表达式替换所有的非法字符,这里实现的是C++98 template(模板)方式的替换无效字符,std::string,std::wstring. 基本上windows上和字符串打交道都离不开wstring. 函数: template<class T> void FilterInvalidFileNameChar(

过滤Windows文件名中的非法字符

转载:http://blog.csdn.net/infoworld/article/details/42033097 场景: 1. 通常生成文件时需要一个文件名,而生成文件名的方式可能是通过用户输入的字符,但是有些字符在windows上是不能作为文件名的,强行创建这类文件会失败. 2.一般可以通过正则表达式替换所有的非法字符,这里实现的是C++98 template(模板)方式的替换无效字符,std::string,std::wstring. 基本上windows上和字符串打交道都离不开wstr

复制class文件到as中出现非法字符,须要class,interface货enum

问题如题,出现此情况是在导入eclipse项目到Android Studio出现这种错误, 非法字符: '\ufeff' 解决方式|错误: 须要class, interface或enum,查阅后了解到Eclipse能够智能的把UTF-8+BOM文件转为普通的UTF-8文件.Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM编码的文件c=search&key=%E6%97%B6%E4%BC%9A" style="font-fam