独上高楼网站
  •    你所在位置:首页 VS.netXMLXML基础教程〉XML基础教程:XML DOM 添加节点
  • XML基础教程:XML DOM 添加节点
  • 作者:佚名  文章来源:ttp://www.w3school.com.cn  发布日期:2008-03-06  浏览次数:651
  • 打印这篇文章
  • XML DOM 添加节点

    实例

    在下面的例子中,我们将使用XML文件books.xml,以及JavaScript函数loadXMLDoc()。

    向一个节点列表的末尾添加一个节点
    本例使用createElement()来创建一个新的元素,并使用appendChild()将此节点添加到一个节点列表。
    在特定的节点之前添加节点
    本例使用createElement()来创建一个新的元素,并使用insertBefore()将此节点插入到特定的节点之前
    设置新的属性和属性值
    本例使用setAttribute()方法来设置新的属性/属性值。
    向一个文本节点插入数据
    本例使用insertData()向一个文本节点插入数据。

    向一个节点列表的末尾添加一个节点

    appendChild()方法可用来在某个特定的节点之后添加一个节点。

    此方法在被添加节点的位置不很重要的情况下是很有用的。

    下面的代码片段可创建一个元素(< edition>),并可将此元素添加到每个< book>元素的最后一个子元素之后:

    xmlDoc=loadXMLDoc("books.xml");
    
    var x=xmlDoc.getElementsByTagName('book');
    var newel,newtext
    
    for (i=0;i< x.length;i++)
      {
      newel=xmlDoc.createElement('edition');
      newtext=xmlDoc.createTextNode('First');
      newel.appendChild(newtext);
      x[i].appendChild(newel);
      }
    

    在某个特定的节点之前插入节点

    insertBefore()可用来在某个特定的节点之前插入一个节点。

    此方法在被添加节点的位置很重要的情况下是很有用的。

    下面的代码片段可创建一个新的< book>元素,并把它插到最后一个< book>元素之前:

    //check if last child node is an element node
    function get_lastchild(n)
    {
    var x=n.lastChild;
    while (x.nodeType!=1)
      {
      x=x.previousSibling;
      }
    return x;
    }
    
    xmlDoc=loadXMLDoc("books.xml");
    
    var x=xmlDoc.documentElement;
    
    var newNode=xmlDoc.createElement("book");
    var newTitle=xmlDoc.createElement("title");
    var newText=xmlDoc.createTextNode("A Notebook");
    
    newTitle.appendChild(newText);
    newNode.appendChild(newTitle);
    
    x.insertBefore(newNode,get_lastchild(x));
    

    注释:Internet Explorer会忽略节点之间产生的空白文本节点(例如换行字符),而Mozilla不会这样。因此,在上面的例子中,get_lastchild()函数会检查参数的最后一个子节点的节点类型。

    元素节点的节点类型是1,因此假如参数中节点的最末子节点不是元素节点,那么它就会移至上一个节点,并检查此节点是否为元素节点。这个过程会持续到最后一个子节点被找到为止。通过这个办法,我们就可以在Internet Explorer 和 Mozilla中得到正确的结果了。

    设置新的属性和属性值

    setAttribute()方法可被用来改变已有属性的值,或者为某个元素创建新的属性/属性值。

    下面的代码片段可向每个< book>元素添加新的属性/属性值:

    xmlDoc=loadXMLDoc("books.xml");
    
    var x=xmlDoc.getElementsByTagName("book");
    
    for(i=0;i< x.length;i++)
      {
      x.item(i).setAttribute("edition","FIRST");
      }
    

    注释:假如"edition"属性已存在,setAttribute()方法将重写此属性的值。

    向某个文本节点插入数据

    insertData()方法可用来向某个文本节点插入数据。

    insertData()方法有两个参数:

    • offset - 从何处开始插入字符。偏移量的起始值是0
    • string - 要插入的字符串

    下面的代码片段可向已载入的XML的第一个< title>元素的文本节点添加"Easy":

    xmlDoc=loadXMLDoc("books.xml");
    var x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
    x.insertData(0,"Easy ");
    
  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页