我從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來獲取某些元素的子節點 –