Как выбрать группу узлов и добавить к ней новый элемент (родного брата)? - PullRequest
0 голосов
/ 30 августа 2011

У меня уже есть код, который добавляет дочерний элемент к элементу.Но я не нашел способ просто добавить еще одного родного брата.В основном у меня есть список узлов, и все они названы буквой и номером.Например: A01, A02, B05, B06, D19, D20 и т. Д. Теперь, когда я хочу добавить еще один узел в «группу D», у меня есть код, который делает это:

Protected Sub addNodeToSectionInOrder(ByVal rootNode As XmlDocument, ByVal rowNode As XmlElement)

    Dim xmlNameTbl As XmlNameTable = rootNode.NameTable
    Dim xmlNS As XmlNamespaceManager = New XmlNamespaceManager(xmlNameTbl)
    xmlNS.AddNamespace("asp", "http://webadmin.rp.com/asp")

    Dim sectionLetter As String = rowNode.GetAttribute("ID").Substring(0, 1)

    Dim addingNav As XPathNavigator = rootNode.CreateNavigator

    Dim addingItr As XPathNodeIterator = addingNav.Select("//asp:TableRow[starts-with(@ID, '" & sectionLetter & "')]", xmlNS)
    While addingItr.MoveNext
        'just moving iterator to the last node
        'hope to find a better way of doing this
    End While

End Sub

Теперь япросто хочу добавить rowNode в этот список, в качестве родного брата.Я пробовал xpathnavigator, xpathnodeiterator, xmlnodelist.Пока ничего.Я почти уверен, что ошибаюсь, но не могу понять, где.

Редактировать: Пример XML

<?xml version="1.0" encoding="utf-8"?>
    <Root>
        <BoxGroup ID="A01">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="A02">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="A03">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="B01">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="B02">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="B03">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="C01">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="C02">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="C03">
            <Items>Apple</Items>
        </BoxGroup>
    </Root>

Добавить в качестве нового узла:

<BoxGroup ID="B04">
    <Items>Apple</Items>
</BoxGroup>

И результирующий XML должен быть:

<?xml version="1.0" encoding="utf-8"?>
    <Root>
        <BoxGroup ID="A01">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="A02">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="A03">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="B01">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="B02">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="B03">
            <Items>Apple</Items>
        </BoxGroup>
        **<BoxGroup ID="B04">
            <Items>Apple</Items>
        </BoxGroup>**
        <BoxGroup ID="C01">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="C02">
            <Items>Apple</Items>
        </BoxGroup>
        <BoxGroup ID="C03">
            <Items>Apple</Items>
        </BoxGroup>
    </Root>
...