2010-04-19 79 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