美文网首页我爱编程
XML数据转换JSON

XML数据转换JSON

作者: codeSirCao | 来源:发表于2017-07-27 00:15 被阅读33次

    xml

    <?xml version="1.0" encoding="UTF-8"?>
     <recipe>
        <Persion>
            <name>李四</name>
           <sex>男</sex>
           <age>28</age>
            <birth>
               <year>1980</year>
               <month>2</month>
              <day>22</day>
           </birth>
       </Persion>
    </recipe>
    

    通过AJAX请求 原声responseText属性可以直接获取标签中的数据但是不容易操作
    responseXML获取xml格式 通过类似DOM操作转换成JSON对象

    <script>
        var XMLhttp=new XMLHttpRequest()
          XMLhttp.onreadystatechange=function(){
           if(XMLhttp.readyState==4&&XMLhttp.status==200){
                // console.log(XMLhttp.response)
                let arr=XMLhttp.responseXML.documentElement
                // console.log(arr.getElementsByTagName("name"))
               let arr1=arr.getElementsByTagName("Persion")[0]
               var arrr={}
                for (var i = 0; i < arr1.children.length; i++) {
                   // arrr
                   if(arr1.children[i].tagName!="birth"){
                        arrr[arr1.children[i].tagName]=arr1.children[i].innerHTML
                       console.log(arr1.children[i].tagName) 
                   }else{
                      console.log(arr1.children[i].children.length)
                        var birth={};
                        for (var j = 0; j <arr1.children[i].children.length; j++) {
                             birth[arr1.children[i].children[j].tagName]=arr1.children[i].children[j].innerHTML
                        }
                        arrr.birth=birth
                   }
            };
            console.log(arrr)
          }
     }
     XMLhttp.open("get","/data.xml",true)
     XMLhttp.send()
    
    </script>
    

    文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
    DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

     <!DOCTYPE 根元素 [元素声明]>
    

    通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
    通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
    而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
    您还可以使用 DTD 来验证您自身的数据。

    问题的出现:XML的元素名字是不固定的,当两个不同的文档使用同样的名称描述两个不同类型的元素的时候,或者一个同样的标记表示两个不同含义的内容的时候,就会发生命名冲突。
    问题的解决:命名空间(Namespace),对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML中使用DTD中定义的元素,需将DTD的标志和元素名,属性连在一起使用,相当于指明了元素来自什么地方,这样就不会同其他同名元素混淆了(有点类似Java中包的作用,给它取个全名)。在XML中,采用现成的,在全球范围唯一的“域名”作为Namespace,即URL作为XML的Namespace。
    命名空间允许我们在一个文档中结合不同的元素和属性定义,并指明这些元素和属性的定义来自那里。
    命名空间的语法如下:
    xmlns:[prefix]=”[url of name]”
    其中“xmlns:”是必须的属性。“prefix”是命名空间的别名,它的值不能为xml。
    <sample xmlns:ins=”http://www.lsmx.net.ac”>
    <ins:batch-list>
    <ins:batch>Evening Batch</ins:batch>
    </ins:batch-list>
    </sample>
    值得注意的是batch-list,batch等标记必须在"http://www.lsmx.net.ac"中定义,别名为ins。注意在使用前必须先声明命名空间,在使用时别忘了“:”。
    一,默认Namespace xmlns=”[url of namespace]”
    二,指定了父元素的命名空间,子元素希望用自己的命名空间,可以在子元素中指定命名空间的别名。
    三,属性也可以有自己的命名空间。

    今天只是一时兴起简单粗暴写了一下有时间本人会好好更新代码 与命名

    相关文章

      网友评论

        本文标题:XML数据转换JSON

        本文链接:https://www.haomeiwen.com/subject/yxyakxtx.html