Я могу добавить новый дочерний CharacterDevelopmentID с инкрементным идентификатором в качестве внутреннего текста в Characterdevelpments — без проблем. Это заставляет меня:
<S2SProject>
<CharacterDevelopments>
<CharacterDevelopmentID>1</CharacterDevelopmentID>
<CharacterDevelopmentID>2</CharacterDevelopmentID>
</CharacterDevelopments>
</S2SProject>
После добавления CharacterDevelopmentID мне нужно добавить дополнительный дочерний CharacterDevelopmentName, но только к только что созданному CharacterDevelopmentID, поэтому новый XML должен выглядеть так:
<S2SProject>
<CharacterDevelopments>
<CharacterDevelopmentID>1
<CharacterDevelopmentName>another test</CharacterDevelopmentName>
</CharacterDevelopmentID>
<CharacterDevelopmentID>2
<CharacterDevelopmentName>yet another test</CharacterDevelopmentName>
</CharacterDevelopmentID>
</CharacterDevelopments>
</S2SProject>
Я не могу понять, как выбрать узел программно. Всякий раз, когда я пытаюсь выбрать узел на основе идентификатора, ничего не происходит.
fullPath = TSProjectProjectLocation.Text & "\" & TSProjectProjectName.Text
xmlDoc.Load(fullPath)
Dim elemList As XmlNodeList = xmlDoc.GetElementsByTagName("CharacterDevelopmentID")
Dim i As Integer = elemList.Count + 1
newChild = CType(xmlDoc.CreateNode(Xml.XmlNodeType.Element, "CharacterDevelopment", ""), XmlElement)
newChild.SetAttribute("CharacterDevelopmentID", i)
childnode = xmlDoc.CreateElement("CharacterDevelopmentID", i)
Dim elem1 As XmlElement
elem1 = xmlDoc.CreateElement("CharacterDevelopmentID")
elem1.InnerText = i
parNode = xmlDoc.SelectSingleNode("/S2SProject/CharacterDevelopments")
parNode.AppendChild(elem1)
xmlDoc.Save(fullPath) ' --- up to here it works!
elem1 = xmlDoc.CreateElement("CharacterDevelopmentName")
elem1.InnerText = NewCharacterDevelopmentName
parNode = xmlDoc.SelectSingleNode("/S2SProject/CharacterDevelopments/CharacterDevelopmentID[last()]/]") '-- this gives an error XpathException
parNode.AppendChild(elem1)
xmlDoc.Save(fullPath)
Я пробовал несколько вещей, чтобы заставить программу выбрать правильный узел, но безрезультатно. Может кто-то указать мне верное направление? Все, что поможет мне понять это, будет высоко оценено!