Chcę utworzyć routing (ścieżkę) do elementu xml i przypisać go do zmiennej, aby móc szybko uzyskać do niego dostęp w przyszłości. Element, który jest dzieckiem innych elementów, może zmieniać swoją pozycję w dokumencie, więc nie mogę używać metod takich jak first child lub indexing, które opierają się na pozycji. Ścieżka do elementu zawsze będzie stała i nie ma innej takiej ścieżki. Jeśli spojrzymy na krótki przykład, chcę ścieżkę do wartości level4 (header4), abym mógł ją zmodyfikować.

    <level1>
    <level2>
        <level3>header3</level3>
            <level4>header4</level4>
        <level3>header31</level31>
    </level2>
    <level2>
        <level3>nnn</level3>
        <level3>nnnnn</level31>
    </level2>
</level1>
0
Avi.S. 27 wrzesień 2012, 01:08

2 odpowiedzi

Najlepsza odpowiedź

W takim przypadku musisz użyć XPath.

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("Path of the xml");
XmlNode titleNode = xmlDoc.SelectSingleNode("//level1/level2/level3");
3
Rahul Rumalla 27 wrzesień 2012, 01:14

Możesz do tego użyć XPath.

XmlDocument doc; // assuming the xml is already in doc
XmlNode node = doc.SelectSingleNode("/level1/level2/level3/level4");
if(node != null) 
{
    node.InnerText = "New value";
}

Jeśli może być więcej niż jeden poziom4, możesz to zrobić:

XmlDocument doc; // assuming the xml is already in doc
XmlNodeList nodes = doc.SelectNodes("/level1/level2/level3/level4");
if(nodes != null) 
{
    foreach(XmlNode node in nodes)
    {
        node.InnerText = "New value";
    }
}
1
Jetti 27 wrzesień 2012, 01:13