2009-02-13 8 views
0

Я загрузил XmlDocument в память и создал новый XmlElement. Теперь я пытаюсь добавить XmlElement в путь/отчет/раздел/хосты, но я не знаю, как это сделать. Я могу легко добавить его ниже корневого узла XML, но я не могу понять, как я могу перейти на более глубокий уровень в XML и просто добавить туда. В псевдоэпидемии я пытаюсь сделать это:Как я могу перемещаться глубже в XML и добавлять в него данные

doc.SelectNodes ("/ report/section/hosts"). AppendChild (subRoot);

Код:

 XmlDocument doc = new XmlDocument(); 

     doc.Load("c:\\data.xml"); 

     //host 
     XmlElement subRoot = doc.CreateElement("host"); 

     //Name 
     XmlElement ElName = doc.CreateElement("name"); 
     XmlText TxtName = doc.CreateTextNode("text text"); 
     ElName.AppendChild(TxtName); 
     subRoot.AppendChild(ElName); 
     doc.DocumentElement.AppendChild(subRoot); 

     doc.Save("c:\\data.xml"); 

ответ

2

Try SelectSingleNode вместо SelectNodes

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts") 
parent.AppendChild(subRoot); 
1

Метод SelectNodes возвращает список узлов. Вы должны использовать SelectSingleNode вместо этого ...

например. (В верхней части моей головы, не проверял в Visual Studio)

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot); 
0

Вы должны получить ссылку на XmlElement в ваш документ (кроме корня), добавляемых к. Есть a number of methods, доступные на XmlDocument, такие как GetElementById и SelectSingleNode, которые делают это для вас по-разному, исследуют по вкусу.

Тем не менее, весь API в этой области обычно считается немного болезненным, есть ли у вас LINQ?

1

Вы почти находитесь. Попробуйте вместо этого использовать SelectSingleNode:

XmlNode node = doc.SelectSingleNode("/report/section/hosts"); 
node.AppendChild(subRoot); 

 Смежные вопросы

  • Нет связанных вопросов^_^