gpt4 book ai didi

c# - 使用 XamlServices.Save() 序列化 xaml 文档时如何在每个属性后添加换行符

转载 作者:行者123 更新时间:2023-11-30 16:42:23 25 4
gpt4 key购买 nike

在序列化 xaml 文档时,出于可读性原因,我想为每个属性添加一个换行符。

我要序列化的类如下所示:

namespace XMLTest
{
[Serializable]
public class FHConfig
{
public string Name { get; set; } = "Configuration";
public string SettingA { get; set; } = "SettingA";
public string SettingB { get; set; } = "SettingB";
public string SettingC { get; set; } = "SettingC";
public FHConfig() { }
}
}

我使用此代码将对象保存为 xaml 文件:

try
{
string path = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "config.xml");
using (TextWriter writer = File.CreateText(path))
{
FHConfig obj = new FHConfig();
XamlServices.Save(writer, obj);

}
}
catch (Exception exep) { MessageBox.Show("Saving UI parameters: " + exep.Message); }

它生成的文件中每个标签都在一个文本行中:

<FHConfig Name="Configuration" SettingA="SettingA" SettingB="SettingB" SettingC="SettingC" xmlns="clr-namespace:XMLTest;assembly=XMLTest" />

但我希望序列化程序在每个属性后插入换行符。我知道有类似的问题How to add a line break when using XmlSerializer ,但它解决了 xml 文档中的相同问题。

XamlServices.Save() 可以使用 XamlWriter,但是文档中没有关于如何格式化输出文本的线索。

最佳答案

你应该使用方法 XamlServices.Save Method (XmlWriter, Object) ( msdn ) 并设置属性 NewLineOnAttributesXmlWriterSettings类别为 true :

try
{
var xmlWriterSettings = new XmlWriterSettings() { Indent = true, NewLineOnAttributes = true };
string path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "config.xml");
using (XmlWriter xmlWriter = XmlWriter.Create(path, xmlWriterSettings))
{
FHConfig obj = new FHConfig();
XamlServices.Save(xmlWriter, obj);
}
}
catch (Exception exep) { MessageBox.Show("Saving UI parameters: " + exep.Message); }

如果您想从文件“<?xml version="1.0" encoding="utf-8"?>”中省略 XML 声明,您应该设置 OmitXmlDeclarationtrue .

关于c# - 使用 XamlServices.Save() 序列化 xaml 文档时如何在每个属性后添加换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com