我已经取到了一个字符串,内容如下:  
<?xml version="1.0" encoding="UTF-8" ?> 
- <Package>
  <totalCount>45</totalCount> 
  <MaxId>2878419</MaxId> 
- <Message>
- <DeliverMessage>
  <Id>2878419</Id> 
  <Userid>guodcy</Userid> 
  <Srctermid>07168305533</Srctermid> 
  <Desttermid>07168305533</Desttermid> 
  <Content>湖电信测试</Content> 
  <Receivetime>2010-06-27 21:26:54.0</Receivetime> 
  </DeliverMessage>
  </Message>
  </Package>  我想在C#中解析这段XML,取到各个<DeliverMessage></DeliverMessage>中的值,代码应该怎么写?
注:请注意,我已经取到了这段xml的内容放到string中了,不需要再到文件中取了。 

解决方案 »

  1.   

    XmlDocument doc = new XmlDocument();
    doc.LoadXml("你的string");
      

  2.   

    XmlDocument doc = new XmlDocument();
    doc.LoadXml("你的string");XmlNodeList list=doc.SelectNodes(@"Package/Message/DeliverMessage);foreach(XmlNode node in list)
    {
         if (node.ChildNodes!=null &&node.ChildNodes.Count > 0)
                        {
                            foreach (XmlNode subNode in node.ChildNodes)
                            {
                                string name = subNode.Name;
                                string text = subNode.InnerText;                        }                    }}
      

  3.   


            private static void TestXML()
            {
                string xml = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>  
      <Package>
      <totalCount>45</totalCount>  
      <MaxId>2878419</MaxId>  
      <Message>
      <DeliverMessage>
      <Id>2878419</Id>  
      <Userid>guodcy</Userid>  
      <Srctermid>07168305533</Srctermid>  
      <Desttermid>07168305533</Desttermid>  
      <Content>湖电信测试</Content>  
      <Receivetime>2010-06-27 21:26:54.0</Receivetime>  
      </DeliverMessage>
      </Message>
      </Package>";
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
                Console.WriteLine("totalCount : " + doc.GetElementsByTagName("totalCount")[0].FirstChild.Value);
            }
      

  4.   

    接下来的确很简单了,有xpath方法,有findelementbyname方法;
      

  5.   

    XmlDocument doc = new XmlDocument();
    doc.LoadXml("你的string");XmlNodeList list=doc.SelectNodes(@"Package/Message/DeliverMessage);foreach(XmlNode node in list)
    {
         if (node.ChildNodes!=null &&node.ChildNodes.Count > 0)
                        {
                            foreach (XmlNode subNode in node.ChildNodes)
                            {
                                string name = subNode.Name;
                                string text = subNode.InnerText;                        }                    }}
      

  6.   

    不光要获取DeliverMessage中的数据,还要取得<totalCount></totalCount>  
      <MaxId></MaxId>中的数据
      

  7.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplicationTest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                String xml = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>  
                              <Package>
                              <totalCount>45</totalCount>  
                              <MaxId>2878419</MaxId>  
                              <Message>
                              <DeliverMessage>
                              <Id>2878419</Id>  
                              <Userid>guodcy</Userid>  
                              <Srctermid>07168305533</Srctermid>  
                              <Desttermid>07168305533</Desttermid>  
                              <Content>湖电信测试</Content>  
                              <Receivetime>2010-06-27 21:26:54.0</Receivetime>  
                              </DeliverMessage>
                              </Message>
                              </Package>";
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.LoadXml(xml);
                //Console.WriteLine("totalCount : " + doc.GetElementsByTagName("totalCount")[0].FirstChild.Value);
                textBox1.Text = "total:"+doc.GetElementsByTagName("totalCount")[0].FirstChild.Value+"\r\n";
                foreach (System.Xml.XmlNode node in doc.GetElementsByTagName("DeliverMessage"))
                {
                    textBox1.Text = textBox1.Text + "id:" + node["Id"].FirstChild.Value + "\r\n";
                    textBox1.Text = textBox1.Text + "Userid:" + node["Userid"].FirstChild.Value + "\r\n";
                    textBox1.Text = textBox1.Text + "Srctermid:" + node["Srctermid"].FirstChild.Value + "\r\n";
                    textBox1.Text = textBox1.Text + "Desttermid:" + node["Desttermid"].FirstChild.Value + "\r\n";
                    textBox1.Text = textBox1.Text + "Content:" + node["Content"].FirstChild.Value + "\r\n";
                    textBox1.Text = textBox1.Text + "Receivetime:" + node["Receivetime"].FirstChild.Value + "\r\n";
                }
            }
        }
    }total:45
    id:2878419
    Userid:guodcy
    Srctermid:07168305533
    Desttermid:07168305533
    Content:湖电信测试
    Receivetime:2010-06-27 21:26:54.0
      

  8.   

                XmlDocument doc = new XmlDocument();
                doc.Load("test.xml");            XmlNode deliverMessageNode = doc.SelectSingleNode("Package/Message/DeliverMessage");            string id = deliverMessageNode.SelectSingleNode("Id").InnerText;
                string userid = deliverMessageNode.SelectSingleNode("Userid").InnerText;
                string srctermid = deliverMessageNode.SelectSingleNode("Srctermid").InnerText;
                //...