logo       

Re: DOM : removeall nodes with xpath: msg#00028

mozilla.devel.dom

Subject: Re: DOM : removeall nodes with xpath

Ive attempted to use the currentNode.parentNode.removeChild(currentNode)
syntax you suggested.

The node is removed but the document appears to be corrupted AFTER the
deleted node.

Does the xmldom have to be refreshed or something. Have I misunderstood ?

**************************************************

<?xml version="1.0"?>
<root>
<node about="node:1" />
<node about="node:2" />
<node about="node:3" label="hello"/>
<node about="node:4" />
<node about="node:5" />
</root>

***************************************************

<HTML>
<SCRIPT>
var xmldom= document.implementation.createDocument("","test",null)

function docloaded(e)
{
// select node:3 for deletion
xpath="//node[@about='node:3']"

nsResolver =xmldom.createNSResolver(xmldom.documentElement)
try
{
result = xmldom.evaluate(xpath, xmldom, nsResolver, 0, null);
}
catch(e)
{
alert("error"+e)
}
results = [];
while ( node = result.iterateNext ()) results.push ( node );

alert(results.length)

for (var i = 0; i < results.length; i++)
{
var currentNode = results[i]
try
{
currentNode.parentNode.removeChild(currentNode);
}
catch(e)
{
alert("delete error "+e)
}
}
alert("deleted node is "+results[0].getAttribute('label') )

node=xmldom.documentElement.firstChild.nextSibling // get the node's first
child !
while (node!=null)
{
if (node.tagName=="node")
{
alert("node= "+node.getAttribute('about'))
}
node=node.nextSibling.nextSibling
}
}

function execute()
{
xmldom.addEventListener("load",docloaded,false)
xmldom.load("nodes.rdf")
//xmldom.load("nodes.xml")
}

</SCRIPT>

<BODY onload="execute()">
<div id="test" />
</BODY>

</HTML>


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise