使xml更具可读性

有没有办法在.net中获取xml字符串并使其更容易阅读? 我的意思是我可以转换这个:

some data 

对此:

   some data   

有没有内置的课程? 因为sql server 2005似乎删除了xml上的所有格式以节省空间或某些东西……

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

 using System; using System.Xml.Linq; public class Test { static void Main() { string xml = "some data"; XDocument doc = XDocument.Parse(xml); xml = doc.ToString(); Console.WriteLine(xml); } } 

结果:

  some data  

如果您将其写入文件或其他流,则XDocument.Save将(默认情况下)也缩进它。

(我相信如果你真的不需要XDocumentXElement具有所有相同的function。)

如何将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:

   some data  

看一下

 XmlWriterSettings 

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

你可以定义Indent和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 = "some data" 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 = "some data"; string myPrettyXML = ""; myPrettyXML = PrettyXML(myPrettyXML); 

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

希望这可以帮助..