XPath

Notes and sample code for XPath and Ajax

(The following was moved from document.evaluate)

obj.evaluate(xpathExpression,contextNode,namespaceResolver,resultType,result);

//obj and contextNode should be the same object, if context is a ajax xml object (example: returnedXML)
 this should be used as :

 returnedXML.evaluate(xpathExpression,returnedXML,namespaceResolver,returnType,result);

//contextNode should be used in the one in which it was created

//add by mooring 2008-11-15 16:00 china






var xhr = new Ajax('post','demo.xml',parseXML,'xml');
//Ajax is a class written by javascript  which return responseXML object to parseXML function
 function parseXML(obj)//obj is the returnXML object now
{
	if(!obj.documentElement)
	{
		alert("Your Browser does't support this script!");
		return;
	}
	
	var fields = [];//store the results
	if(window.ActiveXObject)
	{
		var tobj = obj.documentElement.selectNodes("/root/field/item");
		for(var i=0;i<tobj.length; i++)
		{
			fields.push(tobj[i].text);
		}
	}
	else
	{
		var tobj = obj.evaluate("/root/field/item",obj.documentElement,null, XPathResult.ANY_TYPE, null);
		var tmp = tobj.iterateNext();
		while(tmp)
		{
			fields.push(tmp.textContent);
			tmp = tobj.iterateNext();
		}
	}        alert(fields);
}
//here is the demo xml file for xpath
<?xml version="1.0"?>
<root>
	<field>
		<item>Art_Id</item>
		<item>PSection</item>
		<item>Qkind</item>
		<item>Qtitle</item>
		<item>Question</item>
		<item>Pic</item>
		<item>Answer1</item>
		<item>Answer2</item>
		<item>Answer3</item>
		<item>Answer4</item>
	</field>
</root>

//add by mooring 2008-11-15 16:16 china