有没有办法在.net中获取xml字符串并使其更容易阅读? 我的意思是我可以转换这个:
<element1><element2>some data</element2></element1>
到此:
<element1>
<element2>
some data
</element2>
</element1>
有没有内置的课程?因为sql server 2005似乎删除了xml上的所有格式以节省空间或某些东西......
答案 0 :(得分:16)
如果您使用的是.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
。)
答案 1 :(得分:5)
如何将XML保存/写回文件?
您可以创建一个XmlWriter并将其传递给XmlWriterSettings实例,您可以将Indent属性设置为true:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create (outputStream, settings);
答案 2 :(得分:1)
您可以将字符串加载到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>
答案 3 :(得分:0)
看看
XmlWriterSettings
http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.aspx
你可以定义Indent和IndentChars
答案 4 :(得分:0)
首先,您已经标记了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
然后你可以将这个函数简化为:
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#版本,但应该可以使用。
希望这会有所帮助..