请教高手问题 ,多多益善 。希望各位倾囊相助

se7en 2011-09-23 01:27:10
闲话少说 ,各位请看题目 :
现在有一个字符串 ,基本格式如下:
<DATALIST>
<MSG>01</MSG>
<USERDATA>
<ROW><![CDATA[1*&*AAA*&*88945c67-69f7-441d-9abf-dfcd0cd9e3fc]]></ROW>
</USERDATA>
<JOBLIST>
<ROW>
<GWBH>bc29bc36-c39f-44c7-9a5e-611315b25c33</GWBH>
<GWMC>业务员</GWMC>
<GSBH>90ca5148-605a-442e-9308-3f55fb2c3806</GSBH>
<GSMC>销售一部</GSMC>
</ROW>
</JOBLIST>
</DATALIST>

<MSG>里的值有两种可能 ,有可能是一位数字 ,也有可能是两位数字 。
<ROW>里的,要取[CDATA[]]这里边的值 。

我现在想要实现的功能是把所有尖括号里边的值取出来 。之前自己写了一个方法 ,不过感觉太麻烦 ,想这应该肯定会有更好的方法 ,希望大家多多指教 。
...全文
119 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以把正則封裝到一個類 ,以後調用就可以了
皮特张 2011-09-23
  • 打赏
  • 举报
回复
正则 或者 xpath
rwm5366745 2011-09-23
  • 打赏
  • 举报
回复
用正则表达式 提取
sunny906 2011-09-23
  • 打赏
  • 举报
回复

String s = @"<DATALIST>
<MSG>01</MSG>
<USERDATA>
<ROW><![CDATA[1*&*AAA*&*88945c67-69f7-441d-9abf-dfcd0cd9e3fc]]></ROW>
</USERDATA>
<JOBLIST>
<ROW>
<GWBH>bc29bc36-c39f-44c7-9a5e-611315b25c33</GWBH>
<GWMC>业务员</GWMC>
<GSBH>90ca5148-605a-442e-9308-3f55fb2c3806</GSBH>
<GSMC>销售一部</GSMC>
</ROW>
</JOBLIST>
</DATALIST>";
XmlDocument xml = new XmlDocument();
xml.LoadXml(s);

List<XmlNode> list = new List<XmlNode>();
XmlNode node = xml.SelectSingleNode("DATALIST/MSG");
list.Add(node);

node = xml.SelectSingleNode("DATALIST/USERDATA/ROW");
list.Add(node);

node = xml.SelectSingleNode("DATALIST/JOBLIST/ROW");
foreach (XmlNode xn in node.ChildNodes)
{
list.Add(xn);
}

foreach (XmlNode xn in list)
{
Console.WriteLine(xn.InnerText);
}
se7en 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zetee 的回复:]
DataSet ds=new DataSet();
ds.ReadXml(@"");

调试ds 看数据
[/Quote]

我现在接收的是个string ,貌似我看你的这个方法 ,是要先转换成xml ,对么
se7en 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hhxxcj 的回复:]
干嘛不用,XML对象来解决,这样你不就方便了吗,直接到到一个XML对象集合,然后循环提取就可以了
或者用正则
不过,个人意见还是你用XML对象来解决比较不错
祝你好运!!!
[/Quote]

现在接收回来的 ,就是一个string ,如果按照你的方法 ,就要先从string 转到xml 。但是如果一转换 ,里边还要做好多处理才好 ,谢谢你的意见 ,你这个方法我曾经想过
se7en 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
规则这么清晰,就用正则啊,以 <开头 ,以 > 结尾
[/Quote]

嗯 ,这个方法想到了 。能不能写个方法或者类什么的 ,方便如果以后还遇到类似的问题 ,只要传入参数就可以解决了呢 ?正则恐怕又要从新写了 ,对么 ?
hhxxcj 2011-09-23
  • 打赏
  • 举报
回复
干嘛不用,XML对象来解决,这样你不就方便了吗,直接到到一个XML对象集合,然后循环提取就可以了
或者用正则
不过,个人意见还是你用XML对象来解决比较不错
祝你好运!!!
zetee 2011-09-23
  • 打赏
  • 举报
回复
DataSet ds=new DataSet();
ds.ReadXml(@"");

调试ds 看数据
bdmh 2011-09-23
  • 打赏
  • 举报
回复
规则这么清晰,就用正则啊,以 <开头 ,以 > 结尾
  • 打赏
  • 举报
回复
C# 顶

110,538

社区成员

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

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

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