zoukankan      html  css  js  c++  java
  • as3判断XML是否合法

    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")
    }
  • 相关阅读:
    Java中的 多线程编程
    Python中的字典详解
    Python中的数据类型
    Python中的字符串操作总结(Python3.6.1版本)
    R语言绘制沈阳地铁线路图
    HIVE中的order by操作
    Hive中order by,sort by,distribute by,cluster by的区别
    HDFS shell命令
    HDFS入门
    Bootstrap_Datatable Ajax请求两次问题的解决
  • 原文地址:https://www.cnblogs.com/xbglbc/p/3835921.html
Copyright © 2011-2022 走看看