友情链接


真我闪博

XML是否合法

在我认为 XML的标签成对 并且根标签外边没有其他东西

以下是合法的

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

 

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


以下是我认为不合法的

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

我现在有个需求就是需要加载的XML文件有合法的可以直接使用的,有的是经过压缩的无法直接使用的

压缩后的内容

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

我需要判断这个XML是否合法

但是

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

var xml:XML = new XML(str);

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")
}

 

 

 

posted on 2014-07-10 16:05  xbg  阅读(410)  评论(0编辑  收藏  举报