新手求助一个Linq To Xml的问题

heeye 2011-10-27 03:03:13

变量str的内容是一串XML字符,我想把这串XML字符用LINQ的方法提取出来,然后填充到一个3行13列的二维数组里,没有数据的就填充空值。小弟不才,找了很多资料还是没能解决,谢谢了。

如果提取的数据往二维数组写比较复杂的话,写到普通的string数组里也行,但只提取第三个row里的data值

str变量的XML如下:

<?xml version="1.0" encoding="GBK"?>
<Message>
<Method>
<Name>Query</Name>
<Items>
<Item>
<Value>
<Row>
<Data>00</Data>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
</Row>
<Row>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
</Row>
<Row>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data/>
<Data/>
<Data/>
<Data/>
<Data>01</Data>
<Data/>
<Data>61</Data>
</Row>
</Value>
</Item>
</Items>
</Method>
</Message>
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
欢乐的小猪 2011-10-27
  • 打赏
  • 举报
回复
void Main()
{
int[,] tagetArr=new int[3][13];
XDocument xml=XDocument.Parse(@"<?xml version=""1.0"" encoding=""GBK""?>
<Message>
<Method>
<Name>Query</Name>
<Items>
<Item>
<Value>
<Row>
<Data>00</Data>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
</Row>
<Row>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
</Row>
<Row>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data/>
<Data/>
<Data/>
<Data/>
<Data>01</Data>
<Data/>
<Data>61</Data>
</Row>
</Value>
</Item>
</Items>
</Method>
</Message>
");
var query=(from x in xml.Descendants("Row")
select x).Take(3).LastOrDefault();
if(query!=null)
{
for(int i=0;i<3;i++)
{
tagetArr[i]= query.Descendants("Data").Select(q=>q.Value??" ").ToArray ();//targetArr就是你要的 多维数组
}
}




}

lostfox9 2011-10-27
  • 打赏
  • 举报
回复
能把XML里的3行13列数据写到一个多维数组里吗?
lostfox9 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
C# code
var query=(from x in xml.Descendants("Row")
select x).Take(3).LastOrDefault();
if(query!=null)
{
string[] key= query.Descendants("Data").Select(q=>q.Value??"……
[/Quote]

太谢谢你了,你写的代码质量真高,让我做的话又要用循环赋值到数组了。
能帮我解释下这句代码的意思吗? Select(q=>q.Value??" ")
q107770540 2011-10-27
  • 打赏
  • 举报
回复
 var query=(from x in xml.Descendants("Row") 
select x).Take(3).LastOrDefault();
if(query!=null)
{
string[] key= query.Descendants("Data").Select(q=>q.Value??" ").ToArray(); //这就是你要的结果
}
lostfox9 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]
C# code

void Main()
{
XDocument xml=XDocument.Parse(@"<?xml version=""1.0"" encoding=""GBK""?>
<Message>
<Method>
<Name>Query</Name>
<Items>
<Item>
<Value>
<Row>
<Data>0……
[/Quote]

我是新手,能写出详细的代码把这个查询出的数据写入一个数组 string[] key;
q107770540 2011-10-27
  • 打赏
  • 举报
回复

void Main()
{
XDocument xml=XDocument.Parse(@"<?xml version=""1.0"" encoding=""GBK""?>
<Message>
<Method>
<Name>Query</Name>
<Items>
<Item>
<Value>
<Row>
<Data>00</Data>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
<Data/>
</Row>
<Row>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
</Row>
<Row>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data>数据</Data>
<Data/>
<Data/>
<Data/>
<Data/>
<Data>01</Data>
<Data/>
<Data>61</Data>
</Row>
</Value>
</Item>
</Items>
</Method>
</Message>
");
var query=(from x in xml.Descendants("Row")
select x).Take(3).LastOrDefault();
if(query!=null)
{
var result= query.Descendants("Data").Select(q=>q.Value??" ");
result.ToList().ForEach(r=>Console.WriteLine(r));
}
/*
数据
数据
数据
数据
数据
数据




01

61

*/
}

110,580

社区成员

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

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

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