C#从XmlDocument提取完整字符串的方法

 更新时间:2025年02月06日 09:18:19   作者:Kelvin_Ngan  
文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,方法二利用`XmlWriterSettings`控制格式,并通过`MemoryStream`作为输出流,可以自定义编码,如UTF-8,感兴趣的朋友跟随小编一起看看吧

方法1:通过XmlDocumentOuterXml属性,见XmlDocument类
该方法获得的xml字符串是不带格式的,可读性差

方法2:利用XmlWriterSettings控制格式等一系列参数,见XmlWriterSettings类
例子:

using System.IO;
using System.Text;
using System.Xml;
...
XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");
// 使用XmlWriterSettings来控制格式化输出
XmlWriterSettings settings = new XmlWriterSettings
{
	Encoding = Encoding.UTF8,
    Indent = true,
    IndentChars = "  ", // 设置缩进字符和大小
    NewLineChars = "\r\n" // 设置换行符
};
using (StringWriter textWriter = new StringWriter())
{
    using (XmlWriter xmlWriter = XmlWriter.Create(textWriter, settings))
    {
        doc.Save(xmlWriter); // 将XML写入StringWriter
    }
    string xmlString = textWriter.ToString(); // 获取字符串
    Console.WriteLine(xmlString);
}

通过StringWriter作为输出流有一个弊端,它默认按照UTF16编码,无法更改,譬如上面的XmlWriterSettings指定了UTF8但实际得到的字符串仍然是UTF16的
改用MemoryStream作为流可以自定义编码,如下:

using (MemoryStream ms = new MemoryStream())  
{
     using (XmlWriter xmlWriter = XmlWriter.Create(ms, settings))
     {
         doc.Save(xmlWriter); // 将XML写入MemoryStream
     }
     string xmlString = Encoding.UTF8.GetString(ms.ToArray());  // 获取字符串
     Console.WriteLine(xmlString);
 }

到此这篇关于C#从XmlDocument提取完整字符串的方法的文章就介绍到这了,更多相关C# XmlDocument提取字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 获取某个时间的0点0分和23点59分59秒

    C# 获取某个时间的0点0分和23点59分59秒

    这篇文章主要介绍了C# 获取某个时间的0点0分和23点59分59秒,文中给大家提到了java 获取某一日期的0点0分0秒和23点59分59秒,需要的朋友可以参考下
    2019-09-09
  • 详解WPF如何把checkbox改成开关样式

    详解WPF如何把checkbox改成开关样式

    这篇文章主要为大家详细介绍了WPF如何把checkbox改成开关样式,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2024-11-11
  • 基于C#实现PDF转HTML并自定义转换选项

    基于C#实现PDF转HTML并自定义转换选项

    在数字化办公场景中,PDF与HTML的互操作需求日益增长,如何在 C# 生态中实现PDF 转 HTML 的高保真转换是开始过程中常见的问题,下面我们就来看看具体实现方法吧
    2025-09-09
  • C# 操作网络适配器的示例

    C# 操作网络适配器的示例

    这篇文章主要介绍了C# 操作网络适配器的示例,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-10-10
  • C#动态生成实体类的5种方法详解与实战演示

    C#动态生成实体类的5种方法详解与实战演示

    这篇文章主要为大家详细介绍了C#中动态生成实体类的5种实用方法,涵盖T4模板,CodeDOM,Roslyn,反射和Emit等技术,有需要的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • C#实现无损压缩图片代码示例

    C#实现无损压缩图片代码示例

    这篇文章介绍了C#实现无损压缩图片的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 在unity脚本中控制Inspector面板的参数操作

    在unity脚本中控制Inspector面板的参数操作

    这篇文章主要介绍了在unity脚本中控制Inspector面板的参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Devexpress treelist 简介

    Devexpress treelist 简介

    本文给大家简单介绍了Devexpress treelist 知识,包括属性列表,事件及使用方法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12
  • C#温故而知新系列教程之闭包

    C#温故而知新系列教程之闭包

    闭包是将一些执行语句的封装,可以将封装的结果像对象一样传递,在传递时,这个封装依然能够访问到原上下文。下面这篇文章主要给大家介绍了关于C#中闭包的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • 详解c# 并行计算

    详解c# 并行计算

    本文主要介绍了并行计算的简单使用,并行循环的中断和跳出、并行循环中为数组/集合添加项、返回集合运算结果/含有局部变量的并行循环、、PLinq(Linq的并行计算)等相关内容。
    2020-12-12

最新评论