有没有办法采取在.net中的XML字符串,使其easyer阅读? 我的意思是我可以转换这样的:

<element1><element2>some data</element2></element1>

这样:

<element1>
    <element2>
        some data
    </element2>
</element1>

时,有任何内置类此?作为SQL Server 2005中,似乎取消对XML的所有格式,以节省空间或一些事......

有帮助吗?

解决方案

如果您使用的.NET 3.5,可以装载其作为XDocument然后只是调用的ToString(),这将适当地缩进它。例如:

using System;
using System.Xml.Linq;

public class Test
{
    static void Main()
    {
        string xml = "<element1><element2>some data</element2></element1>";

        XDocument doc = XDocument.Parse(xml);
        xml = doc.ToString();
        Console.WriteLine(xml);
    }
}

结果:

<element1>
  <element2>some data</element2>
</element1>

如果你正在将其写入到文件或其他流,然后将XDocument.Save(默认)缩进这一点。

(我相信XElement具有所有相同的功能,如果你并不真的需要一个XDocument。)

其他提示

你如何保存/写XML回文件?

您可以创建一个的XmlWriter并把它传递一个XmlWriterSettings例如,当您缩进属性设置为true:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

XmlWriter writer = XmlWriter.Create (outputStream, settings);

可以再次串加载到XDocument对象,并将其保存为一个字符串:

XDocument doc = XDocument.Load(new StringReader(xmlString));
StringWriter writer = new StringWriter();
doc.Save(writer);
string readable = writer.ToString();

这会给你格式化XML是这样的:

<?xml version="1.0" encoding="utf-16"?>
<element1>
    <element2>some data</element2>
</element1>

看一看

XmlWriterSettings

http://msdn.microsoft.com/en -us /库/ system.xml.xmlwritersettings.aspx

可以定义缩进和IndentChars

首先,您所标记的C#和VB.NET两种。所以,我的回答将是对他们俩的。

可以定义函数获取XML字符串作为String类型的参数。

假设;

您创建的函数为:

[VB]

Private Function PrettyXML(XMLString As String) As String    
      Dim sw As New StringWriter()
      Dim xw As New XMLWriter(sw)
      xw.Formatiing = Formatting.Indented
      xw.Indentation = 4

      Dim doc As New XMLDocument
      doc.LoadXML(XMLString)
      doc.Save(xw)
      Return sw.ToString()    
End Function

然后,可以simpyl调用此函数为:

Dim myXML As String = "<element1><element2>some data</element2></element1>"
Dim myPrettyXML As String
myPrettyXML = PrettyXML(myPrettyXML)

[C#]

Private String PrettyXML(string XMLString)
   {
      StringWriter sw = new StringWriter();
      XMLTextWriter xw = new XmlTextWriter(sw);
      xw.Formatiing = Formatting.Indented;
      xw.Indentation = 4;
      XmlDocument doc = new XmlDocument();
      doc.Save(xm);
      return sw.ToString();
   }

然后就可以简单地调用该函数为:

string myXML =   "<element1><element2>some data</element2></element1>";
string myPrettyXML = "";
myPrettyXML = PrettyXML(myPrettyXML);

请注意:我还没有尝试过C#版本,但它应该工作

希望这有助于..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top