c#中如何导入xml文件并且识别其中的节点信息

如题所述

第1个回答  推荐于2016-09-18
 public void GetXml(string filename)
        {
 
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(filename);
 
            XmlNode root = xmldoc.DocumentElement;//顶层节点
                        
            //得到顶层节点列表  
            XmlNodeList topM = xmldoc.DocumentElement.ChildNodes;
            foreach (XmlElement element in topM)
            {                
                IterateXml(element, tNode);
            }
        }
        
public void IterateXml(XmlElement element, TreeNode tvNode)
        {
            //得到该Xml节点的子节点  
            XmlNodeList nodelist = element.ChildNodes;
 
            if (nodelist.Count > 1)
            {
                foreach (XmlElement ele in nodelist)
                {
                    
                    IterateXml(ele, tempNode);//递归读取更深层次节点
                }
 
            }
            else if (nodelist.Count == 1)
            {
                 string str= element.Name;//节点名,element.InnerText ;//节点值
                 Console.WriteLine(element.Name);
                 Console.ReadKey();
            }
        }

追问

请问下这个xml哪个是根目录?找不到,无法使用

//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点

XmlNode rootNode = myXmlDoc.SelectSingleNode("ns:SamplingData");

这个来匹配。

追答

XmlNode root = xmldoc.DocumentElement;//这个语句获取的就是根节点,你这个XML的根节点是soapenv:Envelope

追问

试过了,无法识别T.T

追答

怎么识别不了?我给的那两个方法可以读取出所有节点的
XmlNode rootNode = myXmlDoc.SelectSingleNode("ns:SamplingData");如果你是想识别ns:SamplingData这个节点,这样是识别不了的、

本回答被提问者和网友采纳
第2个回答  2020-01-08
12345678910111213141516171819202122232425262728293031323334353637 public void GetXml(string filename) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(filename); XmlNode root = xmldoc.DocumentElement;//顶层节点 //得到顶层节点列表 XmlNodeList topM = xmldoc.DocumentElement.ChildNodes; foreach (XmlElement element in topM) { IterateXml(element, tNode); } } public void IterateXml(XmlElement element, TreeNode tvNode) { //得到该Xml节点的子节点 XmlNodeList nodelist = element.ChildNodes; if (nodelist.Count > 1) { foreach (XmlElement ele in nodelist) { IterateXml(ele, tempNode);//递归读取更深层次节点 } } else if (nodelist.Count == 1) { string str= element.Name;//节点名,element.InnerText ;//节点值 Console.WriteLine(element.Name); Console.ReadKey(); } }
相似回答