LINQ to XML question when queries can be at many different child levels.


this first dealing xml. many tutorials found looks linq xml great way go. examples found dealing simple xml files. want grab data out of several different layers of child elements , can't find samples on this. know "from node in doc.elements " im onlu going "commercialname " node. can't figure out how next two.

<?xml version="1.0" encoding="utf-8"?>  <data>    <claimssvcrs>  	<claimdownloadrs>  	  <generalpartyinfo>  	    <nameinfo>  		  <commlname>  			<commercialname>bob jenkins</commercialname>            </commlname>  	    </nameinfo>  	    <addr>  	      <postalcode>45242</postalcode>  	    </addr>  	  </generalpartyinfo>  	    <policy>  	      <policynumber>0099341</policynumber>  	    </policy>  	</claimdownloadrs>  	<claimdownloadrs>  	  <generalpartyinfo>  		<nameinfo>  		  <commlname>  			<commercialname>pete wilson</commercialname>  		  </commlname>  		</nameinfo>  	    <addr>  		  <postalcode>45242</postalcode>  		</addr>  	  </generalpartyinfo>  	    <policy>  		  <policynumber>0099341</policynumber>  	    </policy>  	</claimdownloadrs>    </claimssvcrs>  </data>
stringbuilder sb = new stringbuilder(1024);  xelement doc = xelement.load("test.xml");    var nodes =  	from node in doc.elements("claimssvcrs").elements("claimdownloadrs").elements("generalpartyinfo").elements("nameinfo").elements("commlname")  	select new  	{  		name = node.element("commercialname").value,  		zip = node.element("postalcode").value,  		policy = node.element("policynumber").value,  	};    foreach (var node in nodes)  {  	sb.append(node.name);  	sb.append(environment.newline);  	sb.append(node.zip);  	sb.append(environment.newline);  	sb.append(node.policy);  	sb.append(environment.newline);  	sb.append(environment.newline);  }    textbox1.text = sb.tostring();

help.

hi asi tech,

you have done wonderful job. complete it.

you have got node<commercialname>.and, want continue node<postalcode> , <policynumber>. right?

from xml file, can clarify tree of nodes easily. according tree, all-right.

you need turn part :

var nodes = 	from node in doc.elements("claimssvcrs").elements("claimdownloadrs").elements("generalpartyinfo").elements("nameinfo").elements("commlname") 	select new 	{ 		name = node.element("commercialname").value, 		zip = node.element("postalcode").value, 		policy = node.element("policynumber").value, 	};

into:

   var nodes =                 node in doc.elements("claimssvcrs").elements("claimdownloadrs")                 select new                 {                     name = node.element("generalpartyinfo").element("nameinfo").element("commlname").element("commercialname").value,                     zip = node.element("generalpartyinfo").element("addr").element("postalcode").value,                     policy = node.element("policy").element("policynumber").value,                 }; 

the result hava tested:

best regards




Visual Studio Languages  ,  .NET Framework  >  Visual C#



Comments

Popular posts from this blog

Azure DocumentDB Owner resource does not exist

job syspolicy_purge_history job fail in sqlserver 2008

Trying to register with public marketplace error with 'Get-AzureStackStampInformation'