2016-08-14 3 views
1

Вот мой дал XML: -Добавление дочернего узла внутри узла XML с помощью C#

<?xml version="1.0" encoding="utf-8"?> 
<Processes> 
    <Process Name="Process1" Namespace="" Methodname=""> 
    <Validations/> 
    <Transformations/> 
    <Routings/> 
    </Process> 
</Processes> 

Я хочу, чтобы добавить новый узел Validation внутри Validations и для этого я написал следующий код: -

XmlDocument originalXml = new XmlDocument(); 
originalXml.Load(@"C:\Users\Sid\Desktop\Process\Process1.xml");  
XmlNode Validations = originalXml.SelectSingleNode("/Processes/Process[Name="Process1"]/Validations"); 
XmlNode Validation = originalXml.CreateNode(XmlNodeType.Element, "Validation",null); 
Validation.InnerText = "This is my new Node"; 
Validations.AppendChild(Validation); 
originalXml.Save(@"C:\Users\Sid\Desktop\Process\Process1.xml"); 

Но, я получаю сообщение об ошибке в строке «Validations.AppendChild (проверка)» в качестве объекта не задана ссылка на экземпляр объекта. Пожалуйста, предложите какой-то способ исправить это.

ответ

3

Вы можете сделать это

XDocument doc = XDocument.Load(@"C:\Users\Sid\Desktop\Process\Process1.xml"); 
var a = doc.Descendants("Validations").FirstOrDefault(); 
a.Add(new XElement("Validation", "This is my new Node")); 
doc.Save(@"C:\Users\Sid\Desktop\Process\Process1.xml"); 
+0

Спасибо, что сработало :) –

+0

большое счастливое кодирование – Mostafiz

0

Ваш SelectSingleNode() не соответствует ни одному элементу, следовательно, нуль-эталонную исключение. Помимо конфликтной проблемы с двумя кавычками, вы должны использовать шаблон @attribute_name для ссылки на атрибут с использованием XPath. Таким образом, правильным выражением будет:

originalXml.SelectSingleNode("/Processes/Process[@Name='Process1']/Validations"); 
Смежные вопросы