xml非法字符有哪些,XML字符非法处理方法
privatestaticbooleanisXMLCharacter(intc){
if(c=0xD7FF){
if(c=0x20)返回真实;
否则{
if(c== )返回真实;
if(c== )返回真实;
if(c== )返回真实;
返回假的;
}
}
如果(c0xE000)返回假的;if(c=0xFFFD)返回真实;
中频(c0x10000)返回假的;if(c=0x10FFFF)返回真实;
返回假的;
}
==================================
publicclassq
privatestaticbooleanisXMLCharacter(intc){
if(c=0xD7FF){
if(c=0x20)返回真实;
否则{
if(c== )返回真实;
if(c== )返回真实;
if(c== )返回真实;
返回假的;
}
}
如果(c0xE000)返回假的;if(c=0xFFFD)返回真实;
中频(c0x10000)返回假的;if(c=0x10FFFF)返回真实;
返回假的;
}
publistaticvoidcheckcharacterdata(字符串文本)抛出异常{
if(text==null){
thrownewException(
AnullisnotalegalXMLvalue
);
}
//单据检查
char[]data=text。tochararray();
for(inti=0,len=data.length我leni ){
charc=data[I];
int result=c;
//highsurrogate
if(result=0xd 800 result=0x dbff){
//Decodesurrogatepair
in高=c;
尝试{
int low=text。charat(I 1);
如果(低电平0xDC00 低电平0xDFFF){
thrownewException(
巴德索罗加泰帕尔
);
}
//AlgorithmdefinedinUnicodespec
结果=(高-0xD800)*0x400(低-0x DC 00)0x 10000;
我;
}
catch(indexoutofboundsexception){
thrownewException(
巴德索罗加泰帕尔
);
}
}
如果(!isXMLCharacter(result)){
//很可能这个字符不能轻易显示
//因为它是控制使用它十六进制的
原因陈述.
引发新的异常(“0x
Integer.toHexString(结果)
isnotalegalXMLcharacter ");
}
}
//如果有,一切正常
返回;
}
publicstaticvoidmain(String[]args){
booleanflag=false
Strings2=asd。br/;
for(inti=0;i s2.replaceAll( , ).长度();i ){
intj=s2.replaceAll( , ).查拉特(一);
flag=is XML character(j);
如果(!旗)制度。出去。println( SD (char)j SD );
}
}
}