xml:
<Seriesport name="SeriesportSetting">
    <portnumber>COM5</portnumber>
    <baudrate>57600</baudrate>
    <databits>8</databits>
    <paritybit>无</paritybit>
    <stopbit>2</stopbit>
  </Seriesport>
请问我怎么用c#取出COM5、57600这样的值呢?

解决方案 »

  1.   

    很多方法。最简单的是使用XmlSerializer进行反序列化。但是比较灵活、底层一些的做法是可以使用Linq to XML、XMLDocument直接对字符串进行解析。
      

  2.   

    连接贴错了,应该是:http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer(v=vs.80).aspx
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Xml;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string xml = @"<Seriesport name=""SeriesportSetting"">
      <portnumber>COM5</portnumber>
      <baudrate>57600</baudrate>
      <databits>8</databits>
      <paritybit>无</paritybit>
      <stopbit>2</stopbit>
      </Seriesport>
    ";
                XmlDocument xdoc = new XmlDocument();
                xdoc.LoadXml(xml);
                string portnumber = xdoc.ChildNodes[0].ChildNodes[0].InnerText;
                string baudrate = xdoc.ChildNodes[0].ChildNodes[1].InnerText;
                Console.WriteLine(portnumber);
                Console.WriteLine(baudrate);
            }
        }
    }
      

  4.   

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"c:\test.xml");
    Console.WriteLine(xmlDoc.DocumentElement["portnumber"].InnerText);
    Console.WriteLine(xmlDoc.DocumentElement["baudrate"].InnerText);
      

  5.   

    用Xml.Linq最简单if (File.Exists(path))   //path为Xml文件路径
               {
                 XElement  xmldoc = XElement.Load(path);
                for (int i = 0; i < xmldoc.Elements().Count(); i++)
               {
                 string str =xmldoc.Elements().ElementAt(i).Value;
                 messageBox.Shw(str);
               }