求C#解析XML字符串代码

gt138138 2010-06-28 09:40:13
我已经取到了一个字符串,内容如下:
<?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中了,不需要再到文件中取了。
...全文
302 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
geniusatm4 2010-06-28
  • 打赏
  • 举报
回复
            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;
//...
gt138138 2010-06-28
  • 打赏
  • 举报
回复
顶起。。。。。。。。。。。。
gt138138 2010-06-28
  • 打赏
  • 举报
回复
把解析出来的数据 给字符窜 这个怎么去写啊???
gt138138 2010-06-28
  • 打赏
  • 举报
回复
顶起。。。。。。。。。
yuanhuiqiao 2010-06-28
  • 打赏
  • 举报
回复
永生天地 2010-06-28
  • 打赏
  • 举报
回复
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
gt138138 2010-06-28
  • 打赏
  • 举报
回复
不光要获取DeliverMessage中的数据,还要取得<totalCount></totalCount>
<MaxId></MaxId>中的数据
angel6709 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lianshaohua 的回复:]
XmlDocument
[/Quote]
呵呵
gt138138 2010-06-28
  • 打赏
  • 举报
回复
顶起。。。。。。。
wxgcause 2010-06-28
  • 打赏
  • 举报
回复
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;

}

}

}
guyehanxinlei 2010-06-28
  • 打赏
  • 举报
回复
Friendly Up!
ztenv 2010-06-28
  • 打赏
  • 举报
回复
接下来的确很简单了,有xpath方法,有findelementbyname方法;
兔子-顾问 2010-06-28
  • 打赏
  • 举报
回复

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);
}
Fibona 2010-06-28
  • 打赏
  • 举报
回复
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;

}

}

}
兔子-顾问 2010-06-28
  • 打赏
  • 举报
回复
剩下如何获得每个节点不用说了吧。迭代也好。通过节点名获取也好,都容易了。
兔子-顾问 2010-06-28
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.LoadXml("你的string");

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧