我有一个如下所示的XML文件:
<injuryRespData>
<lc01s>
<lc01>
<aac001>1</aac001>
<alca02>2</alca02>
<aab001>3</aab001>
</lc01>
<lc01>
<aac001>4</aac001>
<alca02>5</alca02>
<aab001>6</aab001>
</lc01>
<lc01>
<aac001>7</aac001>
<alca02>8</alca02>
<aab001>9</aab001>
</lc01>
</lc01s>
</injuryRespData>
我有一个Class和List实体:
public class lc01
{
public string aac001{set;get;}
public string alca02{set;get;}
public string aab001{set;get;}
}
List<lc01> list = new List<lc01>();
如何分别获取多个lc01
节点下的子节点的值,并使用Linq to XML添加到List集合?
答案 0 :(得分:0)
您可以使用Descendants
和Select
方法执行此操作:
List<lc01> list=doc.Root.Descendants("lc01")
.Select(e=>new lc01{aac001=(string)e.Element("aac001"),
alca02=(string)e.Element("alca02"),
aab001=(string)e.Element("aab001")
})
.ToList();
答案 1 :(得分:0)
var xml = @"<injuryRespData>
<lc01s>
<lc01>
<aac001>1</aac001>
<alca02>2</alca02>
<aab001>3</aab001>
</lc01>
<lc01>
<aac001>4</aac001>
<alca02>5</alca02>
<aab001>6</aab001>
</lc01>
<lc01>
<aac001>7</aac001>
<alca02>8</alca02>
<aab001>9</aab001>
</lc01>
</lc01s>
</injuryRespData>";
var result = (
from x in XDocument.Parse(xml).Descendants("lc01").Cast<XElement>()
select new XmlSerializer(typeof(lc01)).Deserialize(new StringReader(x.ToString()))).ToList();
答案 2 :(得分:0)
我自己解决了这个问题:
var xml = @"<injuryRespData>
<lc01s>
<lc01>
<aac001>1</aac001>
<alca02>2</alca02>
<aab001>3</aab001>
</lc01>
<lc01>
<aac001>4</aac001>
<alca02>5</alca02>
<aab001>6</aab001>
</lc01>
<lc01>
<aac001>7</aac001>
<alca02>8</alca02>
<aab001>9</aab001>
</lc01>
</lc01s>
</injuryRespData>";
XElement xmlDoc = XElement.Parse(xml);
List<lc01> lc01List = new List<lc01>();
lc01List.clear();
foreach (XElement item in RespDoc.Descendants("lc01"))
{
lc01 temp = lc01()
{
aac001 = item.Element("aac001").Value,
alca02 = item.Element("alca02").Value,
aab001 = item.Element("aab001").Value
}
lc01List.Add(lc01);
}