javascript 插入xml字符串片断,使用什么方法?例如,插入"<child>conten...
发布网友
我来回答
共1个回答
热心网友
JavaScript 操作 XML 需要使用 XML DOM,它和 HTML DOM 很相似。
为什么 innerHTML 等 HTML DOM 属性、方法不能操作 XML?原因很简单,就像 HTML 是 XML 的特殊实例一样,HTML DOM 也是专门优化过的,有的操作只能专用于 HTML。
而 XML DOM 则对于任何 XML 及其子集语言编写的文件都通用,因此它的操作更加原始,步骤也比较复杂。下面举一个例子说明。
假设需要处理的 XML 文件是“example.xml”。
<?xml version="1.0" encoding="UTF-8"?>
<school id="s0">
<grade id="g0" number="1">
<!--在这里插入子节点-->
</grade>
<grade id="g1" number="2"></grade>
<grade id="g2" number="3"></grade>
</school>
现在为“<grade id="g0" number="1"></grade>”节点插入一个子节点“<class>Class 101</class>”。注意在 XML 中,“Class 101”这样的单纯文字内容也被视为节点,即文本节点。
下面是 JavaScript 代码(宿主环境为浏览器,因此需要把代码放在一个 HTML 文件中执行)。
//加载 XML 文档的函数(这个函数的具体实现可以忽略)
function loadXMLDoc(xmlFile){
var xmlDoc;
try{
//Internet Explorer 可以使用其原生方法加载 XML
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}catch(e){
try{
//Firefox 也有标准方法,但可能造成其他浏览器报错,故省略
//使用 XMLHttpRequest 替代,适用于大部分浏览器
var xmlHttp = new XMLHttpRequest() ;
xmlHttp.open("GET",xmlFile,false) ;
xmlHttp.send(null) ;
return xmlHttp.responseXML;
}catch(e){
return null;
}
}
xmlDoc.async=false;
xmlDoc.load(xmlFile);
return xmlDoc;
}
var xml=loadXMLDoc("example.xml"); //加载XML文件
var elemC0=xml.createElement("class"); //创建一个元素节点
var text0=xml.createTextNode("Class 101"); //创建一个文本节点
elemC0.appendChild(text0); //添加文本节点
var elemG0=xml.getElementsByTagName("grade")[0]; //获取需插入的父节点
elemG0.appendChild(elemC0); //添加为子节点