Monday, February 27, 2006

XPath in .Net

Hi, Recently, I was working on XML Parsing using ASP.Net. In this I have to AED (Add/edit/delete) Nodes as user enter data, I am comfortable with adding nodes as I have to create Element and just do... objXml.AppendChild(newchildnode) it works find, but when I have to delete which is more conditional and for me is not as simple to delete as adding new node... My XML is something like this <DEALS> <DEAL> <Products> <product>Product info</product> </Products> </DEAL> <DEAL> <Products> <product>Product info2</product> <product>Product info3</product> <product>Product info4</product> </Products> </DEAL> </DEALS> Now in this XML I have to delete the Product Info 3. One of my friends who has done it before suggest me to Iterate through each Deal and when my counter goes to node 2 just check and Loop (nested) for the products and if I found 2 item in the list delete that. I have the node Serial No for deal and product with me, infact thats the only data I have to delete the node as as many deals can have as many products as user enter in them... Secondly, I frequently getting error for the looping, error i got is Node I was delete is not a Child node of reference node. Than I look for Xpath and after searching and looking for xPath in W3C site I got this piece of code Dim file As String file = "C:\mydata.xml" Dim xmldoc As New XmlDocument xmldoc.Load(file) Dim node As XmlNode node = xmldoc.SelectSingleNode("//DEALS/DEAL[2]/Products/Product[2]") node.ParentNode.RemoveChild(node) xmldoc.Save(file) See the line node = xmldoc.SelectSingleNode("//DEALS/DEAL[2]/Products/Product[2]") It tells the Xml document object to naviagte to Second Deal in the Deals node and than goes to its product and Pick Second Product and than using node.ParentNode.RemoveChild(node) I go to node parent and remove "node" child from its list and save the Document again. Now I have deleted the XML node I want with just two line of code. Happy XMLing Sumit Gupta

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home