添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在序列化某个对象的时候,序列化出来的 XML 进行格式化,可以在创建的 XmlWriter 传入 XmlWriterSettings 设置 Indent 属性,如下面代码

        public static string Serialize<T>(T obj)
            var ns = new XmlSerializerNamespaces();
            ns.Add("", "");
            var xmlSerializer = new XmlSerializer(typeof(T));
            var stringBuilder = new StringBuilder();
            using (var xmlWriter = XmlWriter.Create(new StringWriter(stringBuilder), new XmlWriterSettings
                    Indent = true
                xmlSerializer.Serialize(xmlWriter, obj, ns);
            return stringBuilder.ToString();

上面代码的 XmlSerializerNamespaces 是为了去掉 XML 的命名空间

此时序列化出来的内容将会是格式化的

对于现有的 XML 文件或 XML 字符串,进行格式化,方法是先读取出来,然后再次写入,写入时设置格式化

                    var xmlString = File.ReadAllText(xmlFile);
                    XmlDocument document = new XmlDocument();
                    document.LoadXml(xmlString);
                    using var fileStream = new FileStream(xmlFile, FileMode.Create, FileAccess.Write);
                    fileStream.SetLength(0);
                    using var xmlWriter = XmlWriter.Create(fileStream, new XmlWriterSettings()
                        Indent = true
                    document.WriteTo(xmlWriter);

上面代码的 xmlFile 是一个存放在本地的文件

本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-C-%E5%BA%8F%E5%88%97%E5%8C%96-XML-%E6%97%B6%E8%BF%9B%E8%A1%8C%E8%87%AA%E5%8A%A8%E6%A0%BC%E5%BC%8F%E5%8C%96.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。 如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请