2012-01-10 20 views
0

データを追加しようとしているXMLファイルがあります。私はXMLにLINQを使用していますが、次のように私が使用していたコードは次のとおりです。私はただ、なぜ私がnullを取得しています表示されていない私は開封しておりますLINQ to XML Appendデータがnull参照例外をスローする

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

? –

+0

@JamieKeeling <! - 以下の行は例外をスローします---> :) – CBRRacer

+0

あなたのファイル名が "Test"であると仮定すると、xmlには "Test"という要素がありますか?あなたがxmlにXElementを追加しようとしているなら、thisDoc.Add(新しいXElement( "Sale"))のような何かをする必要があると思います。 – Rajesh

答えて

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

関連する問題