Ignora gli spazi bianchi durante la lettura di XML

Ho un formato XML con il seguente formato

 Value  

Questo proviene da un’origine dati esterna che non posso cambiare. Quando usi XmlReader il contenuto ha Whitepace e Whitepace .

 XmlReaderSettings xmlSettings = new XmlReaderSettings(); xmlSettings.Schemas = new System.Xml.Schema.XmlSchemaSet(); XmlReader schemaReader = XmlReader.Create(xsdStream); xmlSettings.Schemas.Add("", schemaReader); xmlSettings.ValidationType = ValidationType.Schema; reader = XmlReader.Create(xmlFilename, xmlSettings); // Parse the XML file. while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Tag": string value = reader.ReadElementContentAsString(); Console.WriteLine(value); break; } } } 

Come posso evitare questo?

Risposta non funzionante

Questa risposta non sembra funzionare, ma per il momento lo lascio per evitare che qualcun altro lo suggerisca. Lo cancellerò se qualcuno pubblica una risposta migliore.

Hai provato a impostare XmlReaderSettings.IgnoreWhitespace ?

Lo spazio bianco che non è considerato significativo include spazi, tabulazioni e righe vuote utilizzate per separare il markup per una maggiore leggibilità. Un esempio di questo è lo spazio bianco nel contenuto dell’elemento.

Per qualche ragione questo non ha effetto su ReadElementContentAsString o sulla proprietà Value di un nodo di testo.

Risposta semplice

Potresti semplicemente chiamare Trim :

 string value = reader.ReadElementContentAsString().Trim(); 

Ciò non rimuoverà le interruzioni di riga tra le linee contentful, ovviamente … se devi farlo, puoi sempre usare string.Replace .

(Come ho detto nel commento, personalmente preferirei usare LINQ to XML rispetto a XmlReader meno che tu non stia davvero leggendo qualcosa di troppo grande per adattarsi alla memoria, ma questa è una questione a parte).