Getting specified Node values from XML document

杀马特。学长 韩版系。学妹 提交于 2019-11-26 04:25:54

问题


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.


回答1:


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;
         }
        }
    }
}


来源:https://stackoverflow.com/questions/6442024/getting-specified-node-values-from-xml-document

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!