将字符串格式化为XML,以包括制表符、换行符等

本文关键字:制表符 包括 换行符 字符串 格式化 XML | 更新日期: 2023-09-27 18:24:01

我正在将一个字符串从多行文本框序列化为XML。是否发送换行符和制表符以保存在XML中,这样当我反序列化它时,我会让它看起来一样?

示例-文本框看起来像:

Hello JohnDoe,
     This is a message
...
Somelines....
Thank you,
...
End

当我序列化它然后反序列化它时,文本框被填充为:

Hello JohnDoe,This is a message..Some lines....Thank you,...End

它不一定真的很漂亮,我只是想想出一个好方法,让它以更好的形式回来。谢谢

好的,所以我的代码如下:

public void SerializeToXML(List<Report> newReport)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Report>));
            //XmlWriterSettings serializer_settings = new XmlWriterSettings();
            //serializer_settings.Indent = true;
            //serializer_settings.NewLineOnAttributes = true;
            TextWriter textWriter = new StreamWriter(xmlPath);
            serializer.Serialize(textWriter, newReport);
            textWriter.Close();
        }

其中Report只是一个具有一些字符串属性的类。评论中的台词是我努力实现目标的东西。

报告类代码:

public class Report
    {
        public string name
        { get; set; }
        public string email
        { get; set; }
        public string defectID
        { get; set; }
        public string fixedBuild
        { get; set; }
        public string description
        { get; set; }
        [XmlIgnore]
        public string messageBody
        { get; set; }
     private static readonly XmlDocument _xmlDoc = new XmlDocument();
     [XmlElement("messageBody")]
     public XmlCDataSection TextCData
     {
         get
         {
             return _xmlDoc.CreateCDataSection(messageBody);
         }
         set
         {
             messageBody = value.Data;
         }
     }
    }

输出保持不变(没有空白格式)。

将字符串格式化为XML,以包括制表符、换行符等

在XML中保留所有空白的一种方法是使用CDATA节。详细信息取决于进行序列化的方式。有关web服务上下文中的解释,请参阅此问题。如果手动序列化,请使用XmlWriter.WriteCData方法。

本文似乎提供了一个有效的解决方案。也可以在这里查看这个答案。

如果没有看到你的代码,很难给出好的建议。

编辑

您可以手动添加它。

或者你可能可以通过这样的事情(未经测试,根据这个问题修改):

public class Report
{
    [XmlAttribute("xml:space")]
    public string spacing = "preserve";
}

通过这种方式,它应该在序列化期间自动添加。但是,如果您能找到一种方法来设置一个不基于字段或属性的XmlAttribute,那就更好了。