Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    68

    [C#] Leggere child nodes file XML

    Dovrei leggere un file XML strutturato in questo modo:

    <xml>
    <nodo_padre>
    <figlio1>testo</figlio1>
    <figlio2>testo</figlio2>
    <figlio3>testo</figlio3>
    <figlio4>testo</figlio4>
    <figlio5>testo</figlio5>
    <figlio6>testo</figlio6>
    <figlio7>testo</figlio7>
    </nodo_padre>

    ...

    ...

    </xml>


    La mia domanda è: come si leggono i figli del nodo_padre?
    A me interessa leggere solo il valore del figlio2. Ho pensato di fare così:

    codice:
    XmlTextReader reader = new XmlTextReader(fpath);
    
                while (reader.Read())  // Scorre l'XML riga per riga
                {
                    if (reader.Name == "nodo_padre")  // Se trovo il nodo padre
                    {
                        reader.MoveToContent();  // Mi sposto nel contenuto
                        if (reader.Name == "figlio2")  // Se trovo il figlio che mi interessa
                        {
                            figlio2 = reader.Value;  // Salvo il valore
                            ....
                            ....  // Altre operazioni non importanti ai fini della mia richiesta
                        }
                }

  2. #2
    Guarda, per iterare un file XML secondo me è meglio usare strumenti diversi, es. XMLDocument, XMLElement, XMLNode.

    Già solo con un XMLDocument puoi scavare e cercare, prova in debug:

    codice:
    XmlDocument xDoc = new XmlDocument();
    xDoc.Load(Percorso);
    Conta inoltre che i tuoi nodi figlio hanno il loro contenuto nell'innerText, non è Value.

    Gli attributi hanno il Value, es.

    <figlio1>testo</figlio1>

    Può benissimo diventare

    <figlio numero="1">testo</figlio>

    In questo modo il nodo avrà l'attributo "numero" con value "1" e l'innerText "testo".

    Altro appunto, quando lavori con stringhe e oggetti non usare == o != per il confronto, usa Equals(), è meglio.

    reader.Name == "nodo_padre" -> reader.Name.Equals("nodo_padre")
    reader.Name != "nodo_padre" -> !reader.Name.Equals("nodo_padre")

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    68
    Mi sei stato di grandissimo aiuto, con una combinazione tra XmlDocument e XmlNodeList ho risolto il mio problema. Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.