这是我的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++;
}
答案 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”,“......”