C#从XmlDocument提取完整字符串

方法1:通过XmlDocumentOuterXml属性,见XmlDocument类

该方法获得的xml字符串是不带格式的,可读性差

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

例子:

csharp 复制代码
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作为流可以自定义编码,如下:

csharp 复制代码
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);
 }
相关推荐
专注VB编程开发20年37 分钟前
C#全面超越JAVA,主要还是跨平台用的人少
java·c#·.net·跨平台
小猪快跑爱摄影4 小时前
【AutoCad 2025】【C#】零基础教程(四)——MText 常见属性
c#·autocad
炼钢厂5 小时前
C#6——DateTime
c#
Lv11770086 小时前
Visual Studio中的多态
ide·笔记·c#·visual studio
wuguan_7 小时前
C#:多态函数重载、态符号重载、抽象、虚方法
开发语言·c#
我不是程序猿儿7 小时前
【C#】ScottPlot的Refresh()
开发语言·c#
工程师0077 小时前
C# 基于 HSL 与基恩士 PLC 通信
c#·mc协议·基恩士plc
张人玉11 小时前
c# DataSet 类
数据库·c#·dataset
秦苒&11 小时前
【C语言】详解数据类型和变量(一):数据类型介绍、 signed和unsigned、数据类型的取值范围、变量、强制类型转换
c语言·开发语言·c++·c#
c#上位机11 小时前
C#异步编程之async、await
开发语言·c#