XML in C# quali classi usare?

di
Anonimizzato10204
il
7 risposte

XML in C# quali classi usare?

Ciao a tutti, ho visto che in C# ci sono tante classi per gestire XML, che alla fine fanno la stessa cosa. Sono XmlDocument, XmlReader, XPathDocument. Secondo voi cosa conviene usare?

7 Risposte

  • Re: XML in C# quali classi usare?

    La classe XmlDocument carica tutto il documento in memoria è quindi adatta a documenti di piccole dimensioni, però è molto comoda. Se conosci il DOM ti trovi a tuo agio a navigare nei suoi nodi.

    Quando si devono leggere e scrivere documenti di grandi dimensioni, tali da non poter essere caricati in memoria si usano le classi XmlTextReader e XmlTextWriter. Queste classi permettono di elaborare il documento in maniera sequenziale, ovvero forward-only senza poter tornare indietro.

    Le classi XmlTextReader e XmlTextWriter sono molto più scomode rispetto a XmlDocument, conviene usarle solo se vi sono buoni motivi di prestazioni.

    XPath è un linguaggio di interrogazione dei documenti XML. Si tratta di un linguaggio standard, non è specifico del .NetFramework. La classe che ti permette di sfruttare questo linguaggio è XPathDocument.

    Anche la classe XPathDocument carica tutto il documento in memoria e fornisce dei metodi di navigazione, ma il ciò che la caratterizza sono i metodi Select e SelectSingleNode che accettano stringhe XPath come parametro.

    A questo punto hai tutti gli elementi per scegliere la classe che preferisci, anche se ti consiglio di usare LINQ to XML così ti togli il pensiero.
  • Re: XML in C# quali classi usare?

    Finora ho usato XmlDocument è comoda ma non troppo, come è LINQ to XML?
  • Re: XML in C# quali classi usare?

    Se conosci il LINQ usare il LINQ to XML è molto semplice, basta aprire il documento XML con la classe XDocument (non XmlDocument) e scrivere delle query LINQ, ad esempio:
    
    XDocument doc = XDocument.Load("myfile.xml");
    
    int totale = (from p in doc.Root.Descedants("prodotti")
                     where p.Attribute("tipo").Value == "banane"
                     select (int)p.Attribute("peso")).Sum();  
    
    
    Dovrebbe farti la somma del peso di tutte le banane, (non l' ho provata, magari c' è qualche svista) comunque come vedi è estremamente potente.
    Bye
  • Re: XML in C# quali classi usare?

    Si è molto interessante. Ma perché ancora un altra classe XDocument, non bastava XmlDocument?
  • Re: XML in C# quali classi usare?

    La classe XDocument è molto simile alla XmlDocument ed è stata fatta apposta per essere usata con il LINQ. Si vede che la XmlDocument non era adatta.
  • Re: XML in C# quali classi usare?

    Quindi posso usare XDocument al posto di XmlDocument anche per esplorare il documento senza LINQ o me lo sconsigli?
  • Re: XML in C# quali classi usare?

    Si, certamente. Se vuoi puoi dimenticarti XmlDocument e usare sempre XDocument, sia per navigare nel documento XML con i suoi metodi, sia attraverso LINQ.
Devi accedere o registrarti per scrivere nel forum
7 risposte