我正在尝试解析下面的xml,将id_name / rel_no对加载到匿名类型集合中。循环遍历集合时以及其中一个元素中缺少元素时遇到问题。当缺少其中一个元素id_name或rel_no时,有没有办法不加载特定的对?
当循环到达具有缺少元素的特定对时,我得到InvalidOperationException(序列不包含元素)。
感谢您的任何建议。
XDocument xdata = XDocument.Parse(data);
var query = from dox in xdata.Descendants("Inc")
select new
{
IDName= dox.Element("id_name").Value,
RelNo= dox.Descendants("rel_no").First().Value
};
XML
<Data>
<Inc>
<id_name>test</id_name>
<Relationships>
<Relationship>
<rel_no>004</rel_no>
</Relationship>
</Relationships>
</Inc>
<Inc>
<id_name>test2</id_name>
<Relationships>
<Relationship>
</Relationship>
</Relationships>
</Inc>
<Inc>
<id_name>test3</id_name>
<Relationships>
<Relationship>
<rel_no>006</rel_no>
</Relationship>
</Relationships>
</Inc>
</Data>
循环访问
foreach (var record in query)
{
}
答案 0 :(得分:2)
var xdata = XDocument.Parse(data);
var items = xdata.Descendants("Inc")
.Select(d => new
{
DName = (string)d.Element("id_name"),
RelNo = ((string)d.Descendants("rel_no").FirstOrDefault() ?? "")
})
.ToList();