Sto utilizzando XmlSerializer.Serialize e produce interruzioni di riga e spazi non necessari. Come evitarlo?Come serializzare un XML senza spazi inutili e interruzioni di riga? (.NET)
risposta
Forse è possibile utilizzare il sovraccarico accettando un XmlWriter
e configurare il XmlWriter
dato con un'istanza XmlWriterSettings
?
XmlWriterSettings
consente di controllare l'applicazione di interruzioni di riga e rientro.
void Serialize(Object o)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = false;
settings.NewLineHandling = NewLineHandling.None;
//settings.OtherProperties = values;
using (XmlWriter writer = XmlWriter.Create(CreateStream(), settings))
{
_serializer.Serialize(writer, o);
}
}
ha funzionato, grazie –
Ho dovuto cambiare i parametri in questo modo: '_serializer.Serialize (writer, o);'. Ottima soluzione, grazie! –
È interessante, ho pensato che non ci fosse alcuna formattazione di default. Ho appena provato il seguente e non ho ricevuto la formattazione:
using (var stream = new MemoryStream())
{
System.Text.Encoding encoding;
using (var writer = XmlWriter.Create(stream))
{
if (writer == null)
{
throw new InvalidOperationException("writer is null");
}
encoding = writer.Settings.Encoding;
var ser = new XmlSerializer(obj.GetType());
ser.Serialize(writer, obj);
}
stream.Position = 0;
using (var reader = new StreamReader(stream, encoding, true))
{
return reader.ReadToEnd();
}
}
in una corsa del campione, è tornato il seguente codice XML:
<?xml version="1.0" encoding="utf-8"?><obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><childOne /><childTwo /><text>text1</text><text>text2</text></obj>
Forse ti piace di più =) –
Tale incoerenza dovrebbe essere segnalata a Microsoft. Un metodo non può comportarsi in modi diversi. È dipendente dalla cultura? O è una versione .NET/Service Pack? Non lo so ancora. –
Se hai la possibilità, esegui il codice che ho postato. Sto usando .NET 3.5 SP1. Vediamo qual è la vera differenza. –
Si prega di verificare anche se le classi serializzato contengono membri di XML-tipo (come XmlElement). Ho usato lo strumento Xsd2Code per generare classi da XSD e (in casi molto particolari) ha creato un membro di tipo XmlElement. Durante la serializzazione questo membro ha la sua formattazione (l'identificazione è esatta). Anche se avessi attivato o disattivato il rientro XmlSerializer, non aveva alcun effetto sul membro XmlElement.
- 1. Come produrre la firma XML senza spazi bianchi e interruzioni di riga in Java?
- 2. Come serializzare questo XML in .NET (array)
- 3. file_put_contents, file_append e interruzioni di riga
- 4. Interruzioni di riga nel documento XML xmlwriter
- 5. Come (xml) serializzare un uri
- 6. PHP utf8_encode() converte gli spazi in spazi senza interruzioni
- 7. serializzare una bitmap in C# /. NET XML
- 8. Serializzare l'oggetto senza spazi dei nomi utilizzando DataContractSerializer
- 9. NET serializzazione XML e l'eredità
- 10. Come stampare NumPy oggetti senza interruzioni di riga
- 11. Come posso rimuovere tutti gli spazi bianchi e le interruzioni di riga in Perl?
- 12. Groovy modifica file XML, conserva commenti, interruzioni di riga
- 13. Serializzare un oggetto in XML
- 14. LINQ to XML ignora le interruzioni di riga in attributi
- 15. C# serializzare decimale xml
- 16. perché php trim in realtà non rimuove tutti gli spazi bianchi e le interruzioni di riga?
- 17. NET serializzazione XML senza dichiarazione <?xml> testo
- 18. come rilevare interruzioni di riga in java
- 19. Come serializzare un oggetto .NET in Azure Blob Storage senza utilizzare un file temporaneo?
- 20. Bootstrap popover nasconde interruzioni di riga
- 21. interruzioni di riga o segni di punteggiatura come interruzioni di posizione in elasticsearch
- 22. Posso serializzare i Tipi anonimi come xml?
- 23. hanno interruzioni di riga aggiuntive
- 24. Interruzioni di riga ASP - \ n?
- 25. Serializzare in un frammento XML - non in un documento XML
- 26. nano editor interruzioni di riga
- 27. UILabel rileva interruzioni di riga
- 28. Java Regex che sostituisce solo più spazi bianchi con spazi senza interruzioni
- 29. Rimuovere gli spazi bianchi nella stringa XML
- 30. Come ignorare le interruzioni di riga?
Vecchio, ma credo che la differenza sia se si utilizza un XmlWriter o un TextWriter. Nella mia esperienza, XmlWriter non ha alcuna formattazione. Questo ha senso, perché sa che sta scrivendo un documento in cui la formattazione non ha importanza, mentre uno scrittore di testi sta scrivendo direttamente del testo. – Timothy