2010-04-19 56 views
2

我在哪裏出錯?將元素添加到現有的XML節點

我有OppDetails爲已標記的XML文件如下圖所示

<OppDetails> 
    <OMID>245414</OMID> 
    <ClientName>Best Buy</ClientName> 
    <OppName>International Rate Card</OppName> 
    <CTALinkType>AO,IO,MC,TC</CTALinkType> 
    </OppDetails> 
    </OppFact> 

我現在想以另一個元素添加進去,但得到的使用appendChild方法錯誤,請幫助

XmlNode rootNode = xmlDoc.SelectSingleNode("OppDetails"); 
XmlElement xmlEle = xmlDoc.CreateElement("CTAStartDate"); 
xmlEle.InnerText = ExcelUtility.GetCTAStartDate(); 
rootNode.AppendChild(xmlEle); 
      xmlDoc.Save("C:\\test.xml"); 
+2

這將有助於瞭解錯誤是什麼。 – EMP 2010-04-19 03:39:01

+0

未將對象引用設置爲對象的實例。 – SSK 2010-04-19 03:42:06

回答

0

rootNodenull

MSDNSelectSingleNode

該 XPath查詢或空引用 (Visual Basic中爲Nothing)匹配的第一個的XmlNode如果沒有 匹配節點中找到。

如果rootNodenull,它表示該節點無法找到,並試圖使用空rootNode會導致您所看到的例外。

0

您報告的異常意味着您沒有找到根元素。當SelectSingleNode找不到請求的節點時,它將返回null。你沒有檢查。

3
XmlElement xmlEle = xmlDoc.DocumentElement["OppDetails"]; 
XmlElement eleNew = xmlDoc.CreateElement("CTAStartDate"); 
eleNew.InnerText = ExcelUtility.GetCTAStartDate(); 
xmlEle.AppendChild(eleNew); 
xmlDoc.Save("C:\\test.xml"); 
+1

這是解決問題的方法嗎? – 2010-04-19 03:57:25

+0

是的,它的工作..... – SSK 2010-04-19 04:03:51

+0

這將是有益的標記爲接受的答案。此外,如果您可以提供任何詳細信息,說明爲什麼當您之前的嘗試失敗時能夠實現這一目標,則可以幫助其他人。 – 2012-12-20 16:33:31

2

這是很難說沒有一個完整的樣本,但對於SelectNodes/SelectSingleNode返回null一個常見的原因是XML命名空間。如果xml使用元素名稱空間,則可能需要使用XmlNamespaceManager以及查詢,併爲所需的名稱空間定義合適的別名。

0

讀取根節點並將新元素添加到根節點。我認爲你正在嘗試追加XML文檔。

+0

這應該是一條評論。 – 2016-12-28 11:33:29

相關問題