当前位置: 首页 > news >正文

xml 格式化

运行效果:免费在线XML格式化工具 - XML代码美化/压缩/验证

代码实现:

using Microsoft.AspNetCore.Mvc;
using System.Xml;
using System.Xml.Linq;namespace SaaS.OfficialWebSite.Web.Controllers
{public class XmlController : Controller{public IActionResult Index(){return View();}[HttpPost]public IActionResult ProcessXml([FromBody] XmlProcessRequest request){try{// 验证请求if (string.IsNullOrWhiteSpace(request.Xml)){return BadRequest(new { success = false, error = "XML内容不能为空" });}// 根据不同操作处理XMLswitch (request.Action.ToLower()){case "validate":return ValidateXml(request.Xml);case "format":return FormatXml(request.Xml, request.Options);case "minify":return MinifyXml(request.Xml);default:return BadRequest(new { success = false, error = "不支持的操作类型" });}}catch (Exception ex){return BadRequest(new { success = false, error = ex.Message });}}private IActionResult ValidateXml(string xml){try{// 尝试加载XML来验证XDocument.Parse(xml);return Ok(new { success = true });}catch (XmlException ex){return Ok(new { success = false, error = $"XML验证失败 (行 {ex.LineNumber}, 位置 {ex.LinePosition}): {ex.Message}" });}}private IActionResult FormatXml(string xml, XmlFormatOptions options){try{var doc = XDocument.Parse(xml);var settings = new XmlWriterSettings{Indent = true,IndentChars = options.Indent == "tab" ? "\t" : new string(' ', int.Parse(options.Indent)),NewLineChars = "\n",NewLineHandling = NewLineHandling.Replace,OmitXmlDeclaration = doc.Declaration == null};using (var writer = new StringWriter())using (var xmlWriter = XmlWriter.Create(writer, settings)){doc.Save(xmlWriter);xmlWriter.Flush(); var formattedXml = writer.ToString();// 如果需要排序属性if (options.SortAttributes){formattedXml = SortAttributes(formattedXml);}return Ok(new { success = true, formattedXml = formattedXml });}}catch (Exception ex){return BadRequest(new { success = false, error = ex.Message });}}private IActionResult MinifyXml(string xml){try{var doc = XDocument.Parse(xml);var settings = new XmlWriterSettings{Indent = false,NewLineHandling = NewLineHandling.None,OmitXmlDeclaration = doc.Declaration == null};using (var writer = new StringWriter())using (var xmlWriter = XmlWriter.Create(writer, settings)){doc.Save(xmlWriter);xmlWriter.Flush();return Ok(new { success = true, formattedXml = writer.ToString() });}}catch (Exception ex){return BadRequest(new { success = false, error = ex.Message });}}private string SortAttributes(string xml){var doc = XDocument.Parse(xml);foreach (var element in doc.Descendants()){if (element.HasAttributes){var orderedAttributes = element.Attributes().OrderBy(attr => attr.Name.LocalName).ToList();element.Attributes().Remove();element.Add(orderedAttributes);}}return doc.ToString();}}public class XmlProcessRequest{public string Xml { get; set; }public string Action { get; set; } // "format", "validate", "minify"public XmlFormatOptions Options { get; set; }}public class XmlFormatOptions{public string Indent { get; set; } = "4"; // "2", "4", "tab"public bool SortAttributes { get; set; } = true;}
}

http://www.dtcms.com/a/321813.html

相关文章:

  • 卷板矫平机:把“翘脾气”的金属板材变平整
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘huggingface_hub’问题
  • C# 装箱拆箱
  • 数据结构进阶 详谈红黑树
  • Redis(⑤-线程池隔离)
  • javaSE(基础):5.抽象类和接口
  • C+++——内存管理
  • 大语言模型提示工程与应用:提示工程入门指南
  • 前端后端之争?JavaScript和Java的特性与应用场景解析
  • 大型语言模型幻觉检测与缓解技术研究综述
  • 将Django项目部署到Vercel平台的完整指南
  • Spring Boot 常用注解及其功能详解
  • Numpy科学计算与数据分析:Numpy高效数据处理与优化
  • 第七章:数据持久化 —— `chrome.storage` 的记忆魔法
  • bytearray和bytes
  • 解决flex元素内部文本溢出的问题min-width: 0
  • Pytest项目_day08(setup、teardown前置后置操作)
  • 树和二叉树和算法复杂度
  • 这款MEMS组合导航系统如何实现高性价比?
  • SVM实战:从线性可分到高维映射再到实战演练
  • 智能对讲机是什么?原理、优势、应用场景、发展趋势详解
  • 前端老项目依赖安全漏洞解决
  • 【LLM实战|langchain、qwen_agent】RAG高级
  • 888. 公平的糖果交换
  • YOLO-Count:用于文本到图像生成的可微分目标计数
  • 智慧公厕自动清洁空气环境,节省门店运营成本
  • 什么是SSL证书颁发机构?
  • 北斗变形监测技术应用与案例分析
  • SVM算法实战应用
  • 【开源工具】网络交换机批量配置生成工具开发全解:从原理到实战(附完整Python源码)