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); //添加为子节点

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com