1

Тема: Зв*язка елементів в xmlDocument з елементами TreeView

Привіт, як видно з заголовка потрібно зв*язати ноди(елементи) для екземпляра документа xml типу XmlDocument і TreeView відповідно.

Відображення і частково звя*зок елементів робив по статті - https://codeby.net/c-rabota-s-elementom … a-treeview
Но через проблеми з відображенням коду на сторінці статті, такий самий робочий код тут на MSDN  https://support.microsoft.com/ru-ru/hel … -2005-or-i
Все що стосується відображення працює, елементи відображаються. Цікавить мене наступна робота с ними(елементами), тобто потрібно якось зв*язати, щоб б вибраний елемент в TreeView(TW) відповідав тому ж в XmlDocument.

Автор статті (перша ссилка вище)привів приклад як можна зв*язати:

private void treeView1_NodeMouseClick(object sender, 
TreeNodeMouseClickEventArgs e)
{
    //находим узел по имени
    XmlNodeList nodes = xmlDoc.GetElementsByTagName(e.Node.Text);
    txtboxAtrName.Text = "";
    txtboxAtrValue.Text = "";
    if (nodes.Count > 0)
    {
        XmlAttributeCollection atrCol;
        atrCol = nodes[e.Node.Index].Attributes;
        if (atrCol.Count > 0)
        {
            //получаем все атрибуты
            foreach (XmlAttribute atr in atrCol)
            {
                txtboxAtrName.Text = atr.Name;
                txtboxAtrValue.Text = atr.Value;
            }
        }
    }
}

При клікові на елемент TW йде обробка вище приведеної події де ми получаємо екземпляр клікнутого нами елемента (e.Node) далі ми получаємо по імені полученого нами елемента список всіх елементів з таким вже іменем із xmlDocument

XmlNodeList nodes = xmlDoc.GetElementsByTagName(e.Node.Text);

Потім звертаємось до получених елементів по індексу данному в TW

atrCol = nodes[e.Node.Index].Attributes;


но індекси(nodes[], e.Node.Index), а значить і елементи можуть не співпадати

Наприклад вибравши елемент car:

<?xml version="1.0" encoding="utf-8" ?>
<cars>
    <models id = "rusAuto">
        <car id="1"> VAZ </car>
        <car id="2"> UAZ </car>
        <car id="3"> neUAZ </car>
    </models>
</cars>

Тут все працює так як індекси співпадають.

А тут ні :

<?xml version="1.0" encoding="utf-8" ?>
<cars>
    <models id = "rusAuto">
        <test id="0">test</test>
        <car id="1"> VAZ </car>
        <car id="2"> UAZ </car>
    </models>
</cars>

Так як через елемент "test" індекси вибраного елемента car не будуть співпадати він зміститься на 1.

Є ідеї як можна це все зв*язати щоб надалі мати можливість добавляти/видаляти елменти і не тільки?
Якщо потрібно більше інформації пишіть!