分享

XML DOM Remove Nodes

 pengyan 2006-11-30

XML DOM Remove Nodes

prev next

Examples

In the examples below, we will use the XML file books.xml, and the JavaScript function loadXMLDoc().

Remove an element
This example uses removeChild() to remove the last <book> element from the loaded XML.

Remove text from a text node
This example uses deleteData() to remove text from a text node in the loaded XML.

Remove an attribute
This example uses removeAttribute() to remove all "category" attributes from the loaded XML.

Use removeAttributeNode()
This example uses removeAttributeNode() to remove all "category" attributes from the loaded XML.


Remove an Element

The removeChild() method can be used to remove a specified node.

The following code fragment will remove the last <book> element from the loaded xml:

//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;
x.removeChild(get_lastchild(x));

Note: Internet Explorer will skip white-space text nodes that are generated between nodes (e.g. new-line characters), while Mozilla will not. So, in the example above, the get_lastchild() function checks the node type of the last child node of the parameter.

Element nodes has a nodeType of 1, so if not the last child of the node in the parameter is an element node, it moves to the previous node, and checks if this node is an element node. This continues until the last child node (which must be an element node) is found. This way, the result will be correct in both Internet Explorer and Mozilla.


Remove Text From an Element

The deleteData() method is used to remove data from a text node.

The deleteData() method has two parameters:

  • offset - Where to begin removing characters. Offset value starts at zero
  • count - How many characters to delete

The following code fragment will remove the first nine characters from the first <title> element in the loaded XML:

xmlDoc=loadXMLDoc("books.xml");
var x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.deleteData(0,9);
 

Remove an Attribute

The removeAttribute() method is used to remove an attribute node.

The following code fragment will remove all "category" attributes in each <book> element:

xmlDoc=loadXMLDoc("books.xml");
var x=xmlDoc.getElementsByTagName(‘book‘);
for(i=0;i<x.length;i++)
            {
            x.item(i).removeAttribute(‘category‘);
            }
 

removeAttributeNode()

The removeAttributeNode() method is used to remove an attribute node.

The following code fragment will remove all "category" attributes in each <book> element:

xmlDoc=loadXMLDoc("books.xml");
var x=xmlDoc.getElementsByTagName(‘book‘);
for(i=0;i<x.length;i++)
            {
            attnode=x.item(i).getAttributeNode("category")
            old_att=x.item(i).removeAttributeNode(attnode);
            document.write("Removed attribute: " + old_att.name + "<br />");
            }

Output:

Removed attribute: category
            Removed attribute: category
            Removed attribute: category
            Removed attribute: category


prev next

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多