as3判断XML是否合法

XML是否合法spa

在我认为 XML的标签成对 而且根标签外边没有其余东西code

如下是合法的xml

<?xml version="1.0" encoding="utf-8"?>
<root><a/>cc</root>

 

<root><a/>cc</root>


如下是我认为不合法的blog

ASDASDASDASD
ASDASD<root><a/>cc</root>
asdasd<root>

我如今有个需求就是须要加载的XML文件有合法的能够直接使用的,有的是通过压缩的没法直接使用的utf-8

压缩后的内容get

x陧}[?筿輠€鼑?鲏?^蓮A?8?[F藨

我须要判断这个XML是否合法it

可是io

str = "x陧}[?筿輠€鼑?鲏?^蓮A?8?[F藨";event

var xml:XML = new XML(str);class

trace(xml)//居然不是null

我是这么解决的

我认为若是new XML不报错 而且第一个字符是"<" 并且 最后一个字符是">" 我就认为这个XML合法 若是解压缩后还不知足就直接当text使用

var tmpByte:ByteArray = event.currentTarget.data;
var tmpText:String = "";
var tmpXml:XML;
try
{
    tmpXml = new XML(tmpByte.readUTFBytes(tmpByte.length));
    
    tmpText = tmpXml.toString();
    
    if(!(tmpText.substr(0,1) == "<" && tmpText.substr(tmpText.length - 1, 1) == ">"))
    {
        tmpXml = null;
    }
    else
    {
        tmpText = tmpXml.toString();
    }
} 
catch (error:Object) { tmpXml = null; }

if (tmpXml == null)
{
    try
    {
        tmpByte.uncompress(CompressionAlgorithm.ZLIB);
        
        tmpXml = new XML(tmpByte.readUTFBytes(tmpByte.length));
        
        tmpText = tmpXml.toString();
        
        if(!(tmpText.substr(0,1) == "<" && tmpText.substr(tmpText.length - 1, 1) == ">"))
        {
            tmpXml = null;
        }
        else
        {
            tmpText = tmpXml.toString();
        }
    }
    catch (error:Object) { tmpXml = null; }
    
    if (tmpXml == null)
    {
        tmpText = tmpByte.readUTFBytes(tmpByte.length);
    }
}
if (tmpXml == null)
{
trace("此字符不是XML");
}else{ trace("此数据是XML")}
相关文章
相关标签/搜索