如果利用javascript脚本来删除xml文档中的一个结点。

解决方案 »

  1.   

    楼上说的 两种方法都可以。在后台删除我 就不说了,应该没什么问题吧。在前台用js删除可以用removeChild方法。比如有下面的 xml(存放在e:\\ttt\\www.xml)<root>
    <doc>
    <a>sss1</a>
    <b>ddd1</b>
    </doc>
    <doc>
    <a>sss2</a>
    <b>ddd2</b>
    </doc>
    </root>现在我要把子节点<a>sss1</a>删除,那么可以这样写
    objXMLData = new ActiveXObject('MSXML2.DOMDocument');

    objXMLData.async = false;
    objXMLData.resolveExternals = false;
    objXMLData.load("e:\\ttt\\www.xml");

    var eventNodeList = objXMLData.selectNodes("//doc");
    var iNodeLen = eventNodeList.length; if(iNodeLen>1)
    {
    eventNodeList[0].removeChild(eventNodeList[0].childNodes[0]);
    }如果你要把改动写回文件,可用objXMLData.save()函数,不过要有写权限,这个一般不要用。
      

  2.   

    to: navy_koo(平湖秋水)
    谢谢,非常感谢!
      

  3.   

    不解之处:
    var eventNodeList = objXMLData.selectNodes("//doc");
    为何不是这句:
    var eventNodeList = objXMLData.selectNodes("//root");
    谢谢
      

  4.   

    to: navy_koo(平湖秋水)
    <root>
    <doc>
    ....
    </doc>
    <doc>
    .....
    </doc>
    </root>
    var eventNodeList = objXMLData.selectNodes("//doc");这句是指选取所有的doc结点吧。
    而eventNodeList[0]是指 第一个doc结点,对吗?
    eventNodeList[0].childNodes[0]是指第一个doc结点下第一个结点。我的理解: var eventNodeList = objXMLData.selectNodes("//root");  这句就可以选取root结点下的所有的doc结点,
    不知道我这样子理解对不对?
      

  5.   

    objXMLData.selectNodes("//root")选取所有的root节点,这时eventNodeList 的长度是1,因为只有一个root节点;
    objXMLData.selectNodes("//doc")选取所有的doc结点;这时eventNodeList 的长度是2。
      

  6.   

    to: navy_koo(平湖秋水)如果我相删除doc结点,是不是要遍历删除doc下所有的点结点先呢?
      

  7.   

    不要啊。
    删除doc节点,只要找到它的上层节点,也就是这里的root,然后把它的孩子节点(也就是doc节点)删除即可啊。
      

  8.   

    听说用Microsoft.XMLDOC也可以,不知道如何实现!