基于递归算法的XML文本格式的判断(javascript实现)

 定义5个xml字符串:

  var str1=" <a>  <b>b</b> <c>c</c>  </a> "
  var str2=" <a  >  <b>b</b> <c>c</c>  </a> "
  var str3=" <a>  <b>b</b> <c>c</c>  "
  var str4=" <a>  <b  >b</b> <c>c</c>  </a> "
  var str5=" <a>  b</b> <c>c</c>  </a> "
在isXml函数中测试

  isXml(str1);     //无输出
  isXml(str2);     //<>中有空格
  isXml(str3);     //<>元素不成对
  isXml(str4);     //<>中有空格
  isXml(str5);     //<>元素不成对

结果如下图:


源码如下:

<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>XML格式判断</title>
</head>
<body>
  <script type="text/javascript">
  var str1=" <a>  <b>b</b> <c>c</c>  </a> "
  var str2=" <a >  <b>b</b> <c>c</c>  </a> "
  var str3=" <a>  <b>b</b> <c>c</c>  "
  var str4=" <a>  <b >b</b> <c>c</c>  </a> "
  var str5=" <a>  b</b> <c>c</c>  </a> "


  isXml(str1);     //无输出
  isXml(str2);     //<>中有空格
  isXml(str3);     //<>元素不成对
  isXml(str4);     //<>中有空格
  isXml(str5);     //<>元素不成对


  function isXml(str){
    if(str.indexOf("<")==-1) return;
    var n1=str.indexOf("<");
    var n2=str.indexOf(">",n1);
    var sub_str=str.substring(n1+1,n2);
    if(!isBlank(sub_str)) return;
    if(!isPair(str,sub_str)) return;
    var n3=str.indexOf("</"+sub_str+">");
    var sub_str_str=str.substring(n2+1,n3);
    isXmlXml(sub_str_str);
  }



   function isBlank(str){
    for(var i=0;i<str.length;i++){
      if(str.charAt(i)==" "){
        console.log("<>中有空格");
        return false;
      }
    }
    return true;
   }
   function isPair(str,sub_str){
    if(str.indexOf("</"+sub_str+">")==-1){
      console.log("元素不成对");
      return false;
    }
      return true;
   }


   function isXmlXml(str){
      if(str.indexOf("<")==-1) return;
      var n1=str.indexOf("<");
      var n2=str.indexOf(">",n1);
      var sub_str=str.substring(n1+1,n2);
      if(!isBlank(sub_str)) return;
      if(!isPair(str,sub_str)) return;
      var n3=str.indexOf("</"+sub_str+">");
      var n4=str.indexOf(">",n3);
      var sub_str1=str.substring(n1,n4+1);
      isXml(sub_str1);     //递归检验
      var sub_str2=str.substring(n4+1);
      isXmlXml(sub_str2);   //递归检验其余的部分
   }


  </script>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值