将元素添加到现有XML节点

时间:2010-04-19 03:34:16

标签: c#

我哪里错了???

我有一个带有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");

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

没有完整的示例很难判断,但SelectNodes / SelectSingleNode返回null的常见原因是xml命名空间。如果xml使用了元素名称空间,那么您可能需要在查询中使用XmlNamespaceManager,并为所需的名称空间定义合适的别名。

答案 2 :(得分:0)

rootNode null

来自SelectSingleNode上的MSDN

  

匹配的第一个XmlNode   XPath查询或空引用   (如果没有,则在Visual Basic中没有)   找到匹配节点。

如果rootNodenull,则表示无法找到该节点,并且尝试使用空rootNode会导致您看到的异常。

答案 3 :(得分:0)

您报告的异常意味着您没有找到根元素。当SelectSingleNode找不到请求的节点时,它将返回null。你没有检查过。

答案 4 :(得分:0)

读取根节点并将新元素添加到根节点。我想你正试图在XML文档中附加。