c# - 读取 XML 文件并缩进

标签 c# xml indentation

我的 XML 文件的缩进一直有问题。每次我从某个服务器加载它们时,XML 节点都乱七八糟地排列在几行上。我想编写一个快速应用程序来正确缩进节点。即:

<name>Bob<name>
<age>24</age>
<address>
  <stnum>2</stnum>
  <street>herp derp st</street>
</address>

目前它的结果是:

<name>bob</name><age>24</age>
<address>
      <stnum>2</stnum><street>herp derp st</street>
</address>

因为我无法触及给我这些 xml 文件的内部程序,并且在没有程序的情况下重新缩进它们会花费很长时间,所以我想编写一个快速程序来为我完成这项工作。当我使用 XMLdocument 库时,它只读取节点的信息。所以我的问题是,什么是逐行读取文件然后为我重新缩进的好方法。所有 xml 节点都相同。

谢谢。

最佳答案

您可以使用 XmlTextWritter 类。更具体地说,.Formatting = Formatting.Indented。

这是我在这篇博文中找到的一些示例代码。 http://www.yetanotherchris.me/home/2009/9/9/formatting-xml-in-c.html

public static string FormatXml(string inputXml)
{
    XmlDocument document = new XmlDocument();
    document.Load(new StringReader(inputXml));

    StringBuilder builder = new StringBuilder();
    using (XmlTextWriter writer = new XmlTextWriter(new StringWriter(builder)))
    {
        writer.Formatting = Formatting.Indented;
        document.Save(writer);
    }

    return builder.ToString();
}

关于c# - 读取 XML 文件并缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9205073/

相关文章:

C#从目录中获取所有没有扩展名的文件名

java - 尽管我在 XML 中移动了它们的位置,但为什么我的卡片 View 的位置是固定的?

java - XML 无法在编码上创建 JAXBContext

netbeans - NetBeans 12.6 的制表符和缩进问题

python - ST3 中的 Linter "line too long"错误和多行字符串内空格过多

c# - Testand - 通过使用 C DLL 的 C# 包装器使用 C# DLL

c# 正则表达式捕获重复的关键字值

c# - 在高负载 Web 应用程序中正确使用 Entity Framework

xml - 在哪里声明xquery函数?

vim - 在Vim中缩进整个文件而不保留当前光标位置