系统交互会用到xml,如果直接构造xml的字串,很容易出现非法字符,所以一般推荐,使用dom4j 先构造合法的xml obj,然后再转为字串。但实际上,即便如此,如果遇到xml的非法字符,即便构造xml obj成功,最后转的xml 字串也是有问题。
xml的无效字符包含ascii值在32以下的三段:0x00-0x08, 0x0b-0x0c, 0x0e-0x1f。在字串中有这些特殊字符时会出现解析错误。dom4j的Element可以设置这些字符,不幸的是,却无法再解析出来。
解决办法:轮询字串的char数组,找出这些字符扔掉即可。方法如下:
public static void main(String[] args) throws Exception{
String invalidStr = "测试特殊符号“”";
String validStr = toValidXmlStr(invalidStr);
Element e = DocumentHelper.createElement("text");
e.setText(validStr);
System.out.println(validStr);
System.out.println(DocumentHelper.parseText(e.asXML()).asXML());
}
/**
* filter the invalid xml characters:
* <ol>
* <li>0x00 - 0x08</li>
* <li>0x0b - 0x0c</li>
* <li>0x0e - 0x1f</li>
* </ol>
* @param xmlStr
* @return
*/
private static String toValidXmlStr(String xmlStr){
StringBuilder sbud = new StringBuilder();
for(char c : xmlStr.toCharArray()){
if(!(0x00 < c && c < 0x08
|| 0x0b < c && c < 0x0c
|| 0x0e < c && c < 0x1f)){
sbud.append(c);
}
}
return sbud.toString();
}
如果直接用invalidStr 进行setText(),虽然此处不报错,但是再解析的时候会报 invalid xml character的异常。
分享到:
相关推荐
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
解析XML特殊字符方法有二种 XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符XML特殊字符
自以为优于CMarkupSTL的xml构造解析器,源代码为头文件形式,不依赖任何类库,支持windows和linux,有实例。附带字符集转换功能、中文字符串使用拼音匹配过滤功能
java解析xml字符串,添加属性,更新属性等
纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...
解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml
XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析
将xml写成字符串的形式,采用dom4j进行解析,一个简单的例子
xml中的非法字符问题
// 下面的是通过解析xml字符串的 doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 System.out.println("根节点:"+ rootElt.getName()); // ...
xml解析xml解析xml解析例子xml解析xml解析xml解析xml解析xml解析xml解析xml解析
易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码
PB解析XML字符串 把XML 变为数据窗口,然后可以方便的获取各字段内容,内含源码PB解析XML字符串 把XML 变为数据窗口,然后可以方便的获取各字段内容,内含源码
主要是利用java代码解析xml字符串、生成xml字符串、解析xml文件、生成xml文件。
使用SAX DOM两种解析方式解析文件
读取xml文件,解析字符串,详细的代码操作
计息xml格式的字符串,封装到Map,Object>集合中
C++实现对xml文件的解析,C++实现对xml文件的解析,C++实现对xml文件的解析。
xml 解析几何 xml 解析几何 xml 解析几何
资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版 内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...