C#从XmlDocument提取完整字符串

server/2025/2/6 8:57:08/

方法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);}

http://www.ppmy.cn/server/165370.html

相关文章

封装常用控制器

封装常用控制器 // // BaseLogicController.swift // 项目中通用的逻辑控制器import UIKit import TangramKitclass BaseLogicController: BaseCommonController {/// 根容器var rootContainer:TGBaseLayout!/// 头部容器var superHeaderContainer:TGBaseLayout!var superHea…

vite配置之---依赖优化选项

vite optimizeDeps 配置项主要在 开发环境 中对依赖项发挥作用 optimizeDeps.entries vite optimizeDeps.entries 是 Vite 配置中的一个选项&#xff0c;用来指定要优化的入口文件。这在开发环境中尤其有用&#xff0c;因为它告诉 Vite 需要预构建哪些文件&#xff0c;以便加速…

压缩动态图片gif 和 静态图片的方法,返回Blob对象

1、定义--压缩动态图片方法 export const gifCompress (file, url, max, min, times) > { if (window.FileReader) { let colors 255 let count 0 const fr new FileReader() fr.readAsArrayBuffer(file) return new Promise((resolve) > { fr.onload async(e) >…

计算机网络的基础设备

1. 集线器&#xff08;Hub&#xff09; 基本概念&#xff1a; 集线器是一种工作在OSI模型第一层&#xff08;物理层&#xff09;的设备&#xff0c;它将多个网络设备连接在一起形成一个星型拓扑结构。当任何设备发送数据时&#xff0c;集线器会将数据复制并传送到连接到其所有端…

DeepSeek的出现对全球GPT产业产生的冲击

引言 近年来&#xff0c;人工智能技术的迅猛发展推动了自然语言处理&#xff08;NLP&#xff09;领域的革命性进步。特别是以GPT&#xff08;Generative Pre-trained Transformer&#xff09;系列模型为代表的大规模预训练语言模型&#xff0c;已经在全球范围内引发了广泛关注…

二叉树原理及其C语言实现

目录 二叉树原理 应用场景 C语言实现 总结 扩展&#xff1a;平衡二叉树&#xff08;AVL 树&#xff09; 二叉树原理 二叉树是一种 非线性数据结构&#xff0c;是数据结构中的核心构造&#xff0c;每个节点最多有两个子节点&#xff0c;通常被称为左子节点&#xff08;left…

CommonAPI学习笔记-2

一. 概述 ​ 这篇文章主要是想整理并且分析CommonAPI代码生成工具根据fidl和fdepl配置文件生成出来的代码的结构和作用。 二. fidl ​ 用户根据业务需求在fidl文件中定义业务服务接口的结构以及自定义数据类型&#xff0c;然后使用core生成工具传入fidl文件生成该fidl的核心…

限流策略实战指南:从算法选择到阈值设置,打造高可用系统

前言 本文将深入探讨常见的限流算法及其适用场景&#xff0c;并详细解析基于 QPS 的限流方案。从如何设置合理的限流阈值&#xff0c;到请求被限流后的处理策略。 常见的限流算法 漏桶 核心原理 请求以任意速率进桶&#xff0c;以 恒定速率 出桶。若桶满则丢弃或排队等待适…