我从XML文件填充列表。有些节点可能不存在,并且这会导致异常,因为它返回null。代码如下:异常C#空列表
public static List<Compte> getXmlComptes(string pathXml)
{
var doc = XDocument.Load(pathXml);
var comptes = doc.Descendants("Anzeige").Descendants("Kunde").Descendants("Konto").Select(p => new Compte()
{
NumCompte = p.Element("KtoNr") != null ? p.Element("KtoNr").Value : String.Empty,
typeCompte = p.Element("KontoArt") != null ? p.Element("KontoArt").Value : String.Empty,
Trans = getXmlTransactions(pathXml)
}).ToList();
return comptes;
}
如何在添加项目到列表之前进行控制。谢谢。 xml文件的
为例:getXmlTransaction的
<Anzeige>
<Kunde>
<IdClient>ppp</IdClient>
<Konto>
<NumCompte>258</NumCompte>
<Transaction>
<idTrans>85555</idTrans>
<type>blebleble</type>
</Transaction>
<Transaction>
<idTrans>85555</idTrans>
<type>blebleble</type>
</Transaction>
</Konto>
</Kunde>
</Anzeige>
代码:
public static List<Transaction> getXmlTransactions(string pathXml)
{
var doc = XDocument.Load(pathXml);
var transactions = doc.Descendants("Anzeige").Descendants("Kunde").Descendants("Konto").Descendants("Transaktion").Select(p => new Transaction()
{
TransID = p.Element("TransID") != null ? p.Element("TransID").Value : String.Empty,
TypeTransaction = p.Element("TransArt") != null ? p.Element("TransArt").Value : String.Empty
}).ToList();
if (transactions != null)
return transactions.ToList();
else
return new List<Transaction>();
}
很可能你在'getXmlTransactions(pathXml)'调用中有例外。当我的答案中不存在节点时,我展示了解析xml的几个提示,但是您需要显示方法定义(以及您试图解析的xml) –
getXmlTransaction(pathxml)的内容与getXmlComptes相同,我称它为Compte包含交易清单 – user1503496
我认为它不一样。还有它不好重新加载整个XML来获取某些元素的子节点 –