当前位置: 代码迷 >> C# >> 新手求读取xml节点的有关问题
  详细解决方案

新手求读取xml节点的有关问题

热度:59   发布时间:2016-05-05 04:53:26.0
新手求读取xml节点的问题,
<TcEventSources>
<Source>
<Id>50</Id>
<Name>TwinCAT Cnc Errors</Name>
<Event>
<Id>1</Id>
<ReqMustCon>0</ReqMustCon>
<Message LcId="2052">急停报警</Message>
<Class>7</Class>
<Priority>0</Priority>
</Event>
<Event>
<Id>2</Id>
<ReqMustCon>0</ReqMustCon>
<Message LcId="2052">普通报警</Message>
<Class>7</Class>
<Priority>0</Priority>
</Event>
</Source>
</TcEventSources>

读取ID  1 或者 2 的急停报警 ,普通报警,之前用的
 XmlNodeList xmlNodeList = xmlDoc.SelectNodes("TcEventSources/Source/Event" + "[id='" + id + "']");//查找
            XmlNode xmlNode = xmlNodeList.Item(0);
            return xmlNode["Class"].InnerText;
            //XmlNode xmlNode = xmlNodeList.Item(0);
            //return xmlNode["id"].InnerText;//   "TcEventSources/Source/Event" + id 

都不对  谢谢大神的指教
------解决思路----------------------
XPATH要逐级查找,不能跳级
-------------------------------------------------------------------------------------------
请为参加博客之星的我投上一票感激之至
------解决思路----------------------
http://blog.csdn.net/duanzi_peng/article/details/24018431
------解决思路----------------------
使用LINQ TO XML。
------解决思路----------------------
XmlNodeList xmlNodeList = xmlDoc.SelectNodes("TcEventSources/Source/Event" + "[id='" + id + "']");//查找
            XmlNode xmlNode = xmlNodeList.ChildNodes[2].InnerText;
------解决思路----------------------

 XDocument item = XDocument.Load("test1.xml");
            var result = from x in item.Descendants("Event")
                         select new
                         {
                             ID = x.Element("Id").Value,
                             Message = x.Element("Message").Value,
                          
                         };
            foreach (var el in result)
            {
                MessageBox.Show(el.ID + " " + el.Message );
            }


------解决思路----------------------
 XmlDocument xmlDoc = new XmlDocument();
            try
            {
                xmlDoc.Load(filename);                
                XmlNodeList xList = xmlDoc.SelectNodes("//Event");
                foreach (XmlNode x in xList)
                {
                    string Id = (x.SelectSingleNode("Id")).InnerText;
                    string Message = (x.SelectSingleNode("Message ")).InnerText;
                    
                }
            }
            catch (Exception e)
            {               
            }
  相关解决方案