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")}
相關文章
相關標籤/搜索