Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting specified Node values from XML document

Tags:

I have a problem going through an XML document (with C#) and get all the necessary values. I successfully go through all specified XmlNodeLists in the XML document, successfully get all XmlNode values inside, but I have to get some values outside of this XmlNodeList.

For example:

<?xml version="1.0" encoding="UTF-8" ?> <Element xsi:schemaLocation="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd xsd2009027_kor21.xsd" Kod="370" xmlns="http://localhost/AML/CaseInvestigationMangement/Moduli/XmlImportControls/xsdBorrow.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> /2001/XMLSchema-instance">     <ANode>         <BNode>             <CNode>                 <Example>                     <Name>John</Name>                     <NO>001</NO>                 </Example>             </CNode>         </BNode>         <ID>1234</ID>         <Date>2011-10-01</Date>     </ANode>     <ANode>         <BNode>             <CNode>                 <Example>                     <Name>Mike</Name>                     <NO>002</NO>                 </Example>             </CNode>         </BNode>         <ID>5678</ID>         <Date>2011-03-31</Date>     </ANode> </Element> 

This is the code that gets values for nodes Name and NO in every found ANode in the XML document:

XmlDocument xml = new XmlDocument(); xml.LoadXml(myXmlString); //myXmlString is the xml file in string //copying xml to string: string myXmlString = xmldoc.OuterXml.ToString(); XmlNodeList xnList = xml.SelectNodes("/Element[@*]/ANode/BNode/CNode"); foreach (XmlNode xn in xnList) {   XmlNode example = xn.SelectSingleNode("Example");     if (example != null)     {         string na = example["Name"].InnerText;         string no = example["NO"].InnerText;     } } 

Now I have a problem getting values for ID and Date.

like image 700
Ljupco Sofijanov Avatar asked Jun 22 '11 15:06

Ljupco Sofijanov


People also ask

How do I find specific nodes in XML?

To find nodes in an XML file you can use XPath expressions. Method XmlNode. SelectNodes returns a list of nodes selected by the XPath string. Method XmlNode.

What is node value in XML?

Element nodes do not have a text value. The text value of an element node is stored in a child node. This node is called a text node. To retrieve the text value of an element, you must retrieve the value of the elements' text node.

What is node and attribute in XML?

According to the XML DOM, everything in an XML document is a node: The entire document is a document node. Every XML element is an element node. The text in the XML elements are text nodes. Every attribute is an attribute node.

What is XML node list?

A node list object represents a list of nodes, in the same order as in the XML. Nodes in the node list are accessed with index numbers starting from 0. Suppose "books. xml" is loaded into the variable xmlDoc.


1 Answers

Just like you do for getting something from the CNode you also need to do for the ANode

XmlNodeList xnList = xml.SelectNodes("/Element[@*]"); foreach (XmlNode xn in xnList) {   XmlNode anode = xn.SelectSingleNode("ANode");     if (anode!= null)     {         string id = anode["ID"].InnerText;         string date = anode["Date"].InnerText;         XmlNodeList CNodes = xn.SelectNodes("ANode/BNode/CNode");         foreach (XmlNode node in CNodes)         {          XmlNode example = node.SelectSingleNode("Example");          if (example != null)          {             string na = example["Name"].InnerText;             string no = example["NO"].InnerText;          }         }     } } 
like image 200
msarchet Avatar answered Oct 03 '22 17:10

msarchet