JS XML

XML

XML : 可扩展的文本标记语言 Extensible Markup Language

  • 整个文是一个文档节点
  • 每个XML标签是一个元素节点
  • 包括在xml元素中的文本是文本节点
  • 每一个xml属性是一个属性节点
  • 注释属于节点

e.g.

<?xml version='1.0' encoding='utf-8'?>
<movies>
    <movie>
        <name>辩护人</name>
        <country>韩国</country>
    </movie>
    <movie age="20" actor="明星">
        <name>V字仇杀队</name>
        <country>美国</country>
    </movie>
    <movie>
        <name>盗梦空间</name>
        <country>美国</country>
    </movie>
</movies>

xml主要作用:为了信息传递
XML文档必须有根元素
所有xml元素都须有关闭标签
xml标签对大小写敏感
xml必须正确地嵌套
xml的属性值须加引号

JS解析XML

  1. 文件
    1. IE
      var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async = false;
      xmlDOc.load("note.xml");
      
    2. 非IE
      var xmlDoc = document.implementation.createDocument("","",null);
      xmlDoc.async = false;
      xmlDOc.load("note.xml");
      
  2. 字符串
    if (window.DOMParse) { // 非IE
     parse = new DOMParser();
     xmlDoc = Parse.parseFromString('txt','');
    } else { // 非IE
     xmlDoc = new ActiveXObject("Microsoft.xmlDOM");
     xmlDoc.async = false;
     xmlDOc.loadXML(tx6);
    }
    

js解析xml格式的字符串

<script type="text/javascript">
//声明一个字符串
var str=  "<?xml version='1.0' encoding='utf-8'?> <movies> <movie> <name>辩护人</name> <country>韩国</country> </movie> <movie> <name>V字仇杀队</name> <country>美国</country> </movie> <movie> <name>盗梦空间</name> <country>美国</country> </movie> </movies>";

var parser=new DOMParser();
xmlDoc=parser.parseFromString(str,"text/xml");

// [{'name':'盗梦空间','country':'美国'}, ......]     ;
var arr = [];
//获取movie标签
    var ms = xmlDoc.getElementsByTagName('movie');
    for(var i=0;i<ms.length;i++) {
    var obj = {};
    //获取name的信息
    var name = ms[i].getElementsByTagName('name')[0].innerHTML;
    //获取country的信息
    var country = ms[i].getElementsByTagName('country')[0].innerHTML;
    //存入对象
    obj.name = name;
    obj.country = country;
    //将对象压入到数组中
    arr.push(obj);
 }

 console.log(arr);
</script>

JS解析XML

<script type="text/javascript">
    //声明一个字符串
    var str=  "<?xml version='1.0' encoding='utf-8'?> <movies> <movie> <name>辩护人</name> <country>韩国</country> </movie> <movie> <name>V字仇杀队</name> <country>美国</country> </movie> <movie> <name>盗梦空间</name> <country>美国</country> </movie> </movies>";

    var parser=new DOMParser();
     xmlDoc=parser.parseFromString(str,"text/xml");

    // [{'name':'盗梦空间','country':'美国'}, ......]     ;
    var arr = [];
    //获取movie标签
     var ms = xmlDoc.getElementsByTagName('movie');
     for(var i=0;i<ms.length;i++) {
         var obj = {};
         //获取name的信息
         var name = ms[i].getElementsByTagName('name')[0].innerHTML;
         //获取country的信息
         var country = ms[i].getElementsByTagName('country')[0].innerHTML;
         //存入对象
         obj.name = name;
         obj.country = country;
         //将对象压入到数组中
         arr.push(obj);
     }

     console.log(arr);
    </script>