2012-01-10 72 views
0

這裏的問題我有一個XML文件,我試圖追加數據。我使用LINQ to XML和我使用的代碼如下:LINQ to XML追加數據拋出空引用異常

public void AppendSalesXMLData(Company company) 
    { 
     string FileName = "TestSales"; 
     string OrgID = company.OrgID.ToString(); 
     string SaleID = company.OrgSales[company.OrgSales.Count - 1].SaleID.ToString(); 

     if (!File.Exists(String.Format(@"C:\Data-Source\trunk\Applications\VintageSiteInspector\XML\{0}.xml", FileName))) 
     { 
      CreateXMLFile(FileName); 
     } 
     XDocument thisDoc = XDocument.Load(String.Format(@"C:\Data-Source\trunk\Applications\VintageSiteInspector\XML\{0}.xml", FileName)); 

     <!------- The following line throws an exception every time. -----> 
     thisDoc.Element(FileName).Add(new XElement("Sale")); 


     thisDoc.Save(String.Format(@"C:\Data-Source\trunk\Applications\VintageSiteInspector\XML\{0}.xml", FileName)); 
    } 

,我打開XML文件是

<?xml version="1.0" encoding="utf-8"?> 
<root> 
<TestSales></TestSales> 
</root> 

我只是不明白爲什麼我得到一個空參考例外。

+0

哪些對象/哪一部分調用的例外呢? – 2012-01-10 15:50:46

+0

@JamieKeeling <! - 下面一行每行都會拋出一個異常---> :) – CBRRacer 2012-01-10 15:51:52

+0

假設你的文件名是「Test」,那麼xml中是否有一個名爲「Test」的元素?如果你試圖添加一個XElement到XML,那麼我想你需要做一些像thisDoc.Add(new XElement(「Sale」)); – Rajesh 2012-01-10 15:54:28

回答

0

Element指的是直接的孩子(在你的情況下是root,而不是TestSale)。嘗試Descendants代替:

thisDoc.Descendants(FileName).First().Add(new XElement("Sale")); 

或者,當你知道XML樹你也可以簡單地走這樣的:

thisDoc.Element("root").Element(FileName).Add(new XElement("Sale")); 
+0

謝謝,它得到了它的工作。 – CBRRacer 2012-01-10 16:23:07