如何将linq转换为xml查询到string []

时间:2010-08-24 02:24:47

标签: c# xml linq

这是我的xml:

<record>
<id>12342</id>
<name>xx</name>
<blah1>asdfas</blah1>
<blah2>asdfas</blah2>
.....
</record>

我想获取所有值并将其放入数组中。 我尝试了以下,它返回“12342xxasdfasasdfas”而不是“12342”,“xx”,“asdfas”,“asdfas”

  var q = record.Elements("record").Select(r=>r.Value);
 string[] array = q.ToArray();

我已经通过使用foreach循环提出了解决方案,只是想知道是否有更好的方法来做到这一点?

var q2 = record.Descendants("record").Elements();
int length = Convert.ToInt32(q2.Count().ToString());
string[] array2 =new string[length];
int i = 0;
                foreach (XElement e in q2)
                {
                    array2[i] = e.Value;
                   i++; 
                }

2 个答案:

答案 0 :(得分:0)

试试这个

string[] result = (from item in record.Descendants("record").Elements()
                  select item.Value).ToArray();

答案 1 :(得分:0)

要提取所有文本元素,请在结构中查找XText个节点并提取其值:

string[] array = record.DescendantNodes()
                       .Where(n => n.NodeType == XmlNodeType.Text)
                       .Select(n => ((XText) n).Value)
                       .ToArray();

结果在你的例子中:“12342”,“xx”,“asdfas”,“asdfas”,“......”