2014-01-16 7 views
2

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

XML-документ начинается как этот

<project> 
    <book> 
    ... 
    </book> 
    <characters> 
    <character> 
     ..... 
    </character> 
    </characters> 
</project> 

мне нужно, чтобы иметь возможность добавить новый элемент символов внутри символов вместе с дочерними узлами внутри с данными.

Я использовал инструкцию if else, если существует узел символов, а если нет. Я работаю над этим, если он существует. В основном документ уже содержит один символ.

Вот код, с которым я сейчас работаю.

nav = nav.SelectSingleNode("/project/characters") 
     nav.AppendChildElement("", "character", "", "") 
     nav.SelectSingleNode("//project/characters/*[last()]") 
     nav.AppendChildElement("", "name", "", characterName) 
     nav.AppendChildElement("", "race", "", characterRace) 
     nav.AppendChildElement("", "age", "", characterAge) 
     nav.AppendChildElement("", "name", "", characterName) 
     nav.AppendChildElement("", "race", "", characterRace) 
     nav.AppendChildElement("", "age", "", characterAge) 
     nav.AppendChildElement("", "gender", "", characterGender) 
     nav.AppendChildElement("", "origin", "", characterOrigin) 
     nav.AppendChildElement("", "eye", "", characterEyeColor) 
     nav.AppendChildElement("", "hair", "", characterHairColor) 
     nav.AppendChildElement("", "weight", "", characterWeight) 
     nav.AppendChildElement("", "height", "", characterHeight) 
     nav.AppendChildElement("", "occupation", "", characterOccupation) 
     nav.AppendChildElement("", "birthmarks", "", characterBirthmarks) 
     nav.AppendChildElement("", "piercings", "", characterPiercings) 
     nav.AppendChildElement("", "tattoos", "", characterTattoos) 
     nav.AppendChildElement("", "scars", "", characterScars) 

     Do While counter < traitCount 

      nav.AppendChildElement("", "trait", "", characterTraits.AsReadOnly(counter)) 

      counter = counter + 1 
     Loop 

     counter = 0 

     Do While counter < habitCount 

      nav.AppendChildElement("", "habit", "", characterHabits.AsReadOnly(counter)) 

      counter = counter + 1 
     Loop 

     nav.AppendChildElement("", "bio", "", characterBio) 


     document.Save(ProjectDataMod.projectPathMod + ProjectDataMod.projectNameMod + ".xml") 

Любая помощь была бы принята с благодарностью. Спасибо за ваше время.

Jb.

+0

Вы спрашиваете, как выбрать последний дочерний элемент, независимо, что случается быть, или вы спрашиваете, в частности, как выбрать новый дочерний элемент, который вы только прилагаемый? –

+0

Мне нужно попасть внутрь элемента, который я только что добавил, или внутри последнего дочернего элемента выбранного узла, который был бы узлом, который я только что добавил, lol. Код до сих пор добавляет дочерний узел в конце , но он не добавляет элементы внутри этого узла ... Мне нужно получить элементы данных и т. Д. Внутри вновь присоединенного дочернего элемента. – user2296112

ответ

1

Edited

Вы можете использовать XPath для этого. Если я понимаю правильно, вы хотите, последний дочерний узел «символов»:

nav.SelectSingleNode("//project/characters/*[last()]") 

Если у вас есть несколько символов узлов вы могли бы сделать:

nav.SelectSingleNode("//project/characters[last()]/*[last()]") 

Чтобы получить последний потомок последнего узла символов ,

+0

Не следует ли удалить вызов функции xpath count()? –

+0

Отредактированный ответ, думаю, я неправильно понял вопрос. –

+0

Это не совсем сработало. Я сделал. nav = nav.SelectSingleNode ("/ project/characters") nav.AppendChildElement ("", "character", "", "") nav.SelectSingleNode ("// project/characters/* [last()]") nav.AppendChildElement ("", "name", "", characterName), но это создано. пучок персональных данных user2296112

0

Вы можете подумать использовать xpath до query ваш xml. Он имеет встроенную функцию для поиска последнего дочернего узла.

http://support.microsoft.com/kb/301220

+0

Любая идея, как это будет работать. Я не настолько разбираюсь в навигации по xml вообще. Просто изучите сейчас. – user2296112

+0

Последняя ссылка показывает пример проекта от Microsoft, который учит, как это работает. – Jay

+0

Sweet Lou имеет очень хорошее сообщение на нем выше моего – Jay

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