C# 读xml问题

有爱的小止 2011-04-23 10:49:07
xml文件结构

<statues>
<status>
<creat_at>a123</creat_at>
<user>
<creat_at>234</creat_at>
</user>
<re>
<status>
<creat_at>a123</creat_at>
<user>
<creat_at>234</creat_at>
</user>
</status>
<re>
</status>
<statues>
<status>
<creat_at>a123</creat_at>
<user>
<creat_at>234</creat_at>
</user>
<re>
<status>
<creat_at>a123</creat_at>
<user>
<creat_at>234</creat_at>
</user>
</status>
<re>
</status>
<statues>
<status>
<creat_at>a123</creat_at>
<user>
<creat_at>234</creat_at>
</user>
</status>

想知道这种嵌套的xml用C#怎么读,要存入对应的字符串数组,如status_creat_at[]存status下的creat_at,user_creat_at[]存user下的creat_at。。还有status有些有re字段,有些没有,没有的返回null....
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjh200102 2011-04-24
  • 打赏
  • 举报
回复
楼上说的不错。

XML读取其实就是目录深度的问题
CShareMySide 2011-04-24
  • 打赏
  • 举报
回复
5楼的应该可以满足了

其实读分部的话,可以控制遍历的深度了
gclol 2011-04-24
  • 打赏
  • 举报
回复
我写了个控制台程序,经过测试没问题,楼主看看合不合适

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace XmlPratice
{
class Tester
{
public List<string> status_create_at;
public List<string> user_create_at;

public Tester()
{
status_create_at = new List<string>();
user_create_at = new List<string>();
}

public void AddStr(XmlNode node,int level)
{
if (level == 1)
{
string str = ((XmlText)node.FirstChild).Value;
status_create_at.Add(str);
}
if (level == 2)
{
string str = ((XmlText)node.FirstChild).Value;
user_create_at.Add(str);
}
}

public void Ex(XmlNode root,int level)
{
foreach (XmlNode node in root.ChildNodes)
{
if (node.HasChildNodes)
{
if (node.Name == "status")
{
Ex(node, 1);
}
else if (node.Name == "user")
{
Ex(node, 2);
}
else if (node.Name == "creat_at")
{
AddStr(node, level);
}
else
{
Ex(node, level);
}
}
else
{
return;
}
}
}
}
class Program
{
static void Main(string[] args)
{
Tester t = new Tester();
int level = 0;

XmlDocument xmlFile = new XmlDocument();
xmlFile.Load(@"C:\Users\Constantine\Desktop\123.xml");
XmlElement element = xmlFile.DocumentElement;
t.Ex(element,level);

Console.WriteLine("status:");
foreach (string str in t.status_create_at)
{
Console.WriteLine(str);
}

Console.WriteLine("user:");
foreach (string str in t.user_create_at)
{
Console.WriteLine(str);
}
Console.ReadKey();
}
}
}
robert6757 2011-04-23
  • 打赏
  • 举报
回复
你用XmlDocument读啊。没有问题啊。具体的呢查一下msdn吧。上面有例子。
如果不行,你再回复我吧。
有爱的小止 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fangxinggood 的回复:]

这个xml看得眼熟啊,还没搞定?
[/Quote]
哈哈。。上回是你帮我弄的嘿。。可是现在有嵌套的时候,用上回的那个,读的时候会把内层的一起读了,或者是读内层,会把外层一起读了。。
我只是想一层一层读
  • 打赏
  • 举报
回复
这个好像可以把他放到一个集合里面,然后循环读取!
机器人 2011-04-23
  • 打赏
  • 举报
回复
这个xml看得眼熟啊,还没搞定?

111,120

社区成员

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

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

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