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.
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.
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.
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.
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.
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; } } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With