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]”
二,指定了父元素的命名空间,子元素希望用自己的命名空间,可以在子元素中指定命名空间的别名。
三,属性也可以有自己的命名空间。
今天只是一时兴起简单粗暴写了一下有时间本人会好好更新代码 与命名
网友评论