2010-04-19 7 views
2

Где я иду не так ???Добавление элемента в существующий узел XML

У меня есть файл XML с OppDetails как уже тег, как показано ниже

<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

+0

Ссылка на объект не установлена ​​в экземпляр объекта. – SSK

ответ

0

Факс: rootNodenull?

От MSDN на SelectSingleNode:

Первый XmlNode, который соответствует XPath запрос или пустая ссылка (Nothing в Visual Basic), если не соответствующий узел найден.

Если rootNode является null, это указывает на то, что узел не может быть найден, и пытается использовать нуль 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

Является ли это решением проблемы? –

+0

Да, это работает ..... – SSK

+0

Было бы полезно отметить это как принятый ответ. Кроме того, если вы могли бы предоставить какие-либо сведения о том, почему вы смогли заставить это работать, когда ваша предыдущая попытка потерпела неудачу, это помогло бы другим. –

2

Трудно сказать без полной выборки, но общая причина для SelectNodes/SelectSingleNode возвращения null является Пространства имен XML. Если xml использует пространства имен элементов, вам, вероятно, потребуется использовать XmlNamespaceManager вместе с вашим запросом и определить подходящий псевдоним для требуемого пространства имен.

0

Прочитайте корневой узел и добавьте новый элемент в корневой узел. Я думаю, вы пытаетесь добавить в XML-документ.

+0

Это должен быть комментарий. –