Bir nesneyi bir dosyaya serileştiren bir kod parçam var. Her XML özniteliğinin ayrı bir satırda çıktısını almaya çalışıyorum. Kod şöyle görünür:XmlTextWriter'de Ayarlar özelliğini nasıl ayarlayabilirim, böylece her XML özniteliğini kendi satırına yazabilirim?
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.NewLineOnAttributes = true;
XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
writer.Settings = settings; // Fails here. Property is read only.
using (Stream baseStream = writer.BaseStream)
{
serializer.Serialize(writer, obj);
}
}
tek sorun, XmlTextWriter
nesnenin Settings
özelliği salt okunur.
NewLineOnAttributes
ayarının çalışması için XmlTextWriter
nesnesindeki Settings
özelliğini nasıl ayarlayabilirim?
Eh, XmlWriter
bir abstract
sınıftır beri, bir XmlTextWriter
gerektiğini düşündük. Bana sorarsan biraz kafa karıştırıcı. Nihai çalışma kodu burada:
/// <summary>
/// Serializes an object to an XML file; writes each XML attribute to a new line.
/// </summary>
public static void ToXMLFile(Object obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
using (XmlWriter writer = XmlWriter.Create(filePath, settings))
{
serializer.Serialize(writer, obj);
}
}
O örneğini vermedi görme:
Formatting
özelliğini kullanmalısınız. Uygulandığını söylüyor, ancak yaratılan nesne boş. Not: Ben 'XmlTextWriter yazar = XmlWriter.Create XmlTextWriter olarak (filePath, ayarlar) kullanılan;' –@RobertHarvey - Bu 'XmlWriter.Create (...)' a XmlTextWriter' yaratmak anlamına gelir. Çıktıya baktığınızda, bir 'XmlWellFormedWriter' döndürdüğünü göreceksiniz. Bir XmlWriter gibi davranmak akıllıca olurdu. – Polity
Peki, bir "XmlTextWriter" e nasıl ulaşabilirim? –