有什么方法可以在 .net 中获取 xml 字符串并使其更易于阅读?我的意思是我可以转换这个:
<element1><element2>some data</element2></element1>
对此:
<element1>
<element2>
some data
</element2>
</element1>
有没有内置的类?由于 sql server 2005 似乎删除了 xml 上的所有格式以节省空间或某些东西......
有什么方法可以在 .net 中获取 xml 字符串并使其更易于阅读?我的意思是我可以转换这个:
<element1><element2>some data</element2></element1>
对此:
<element1>
<element2>
some data
</element2>
</element1>
有没有内置的类?由于 sql server 2005 似乎删除了 xml 上的所有格式以节省空间或某些东西......
如果您使用的是 .NET 3.5,则可以将其加载为 an 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 实例,在其中将 Indent 属性设置为 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/library/system.xml.xmlwritersettings.aspx
你可以定义 Indent 和 IndentChars
首先,您已经标记了 C# 和 VB.NET。所以我的答案是对他们两个。
您可以定义获取 XML 字符串作为字符串类型参数的函数。
比方说;
您创建了一个函数:
[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
然后你可以简单地调用这个函数:
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# 版本,但它应该可以工作。
希望这可以帮助..