使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
将(默认情况下)也缩进它。
(我相信如果你真的不需要XDocument
, XElement
具有所有相同的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#版本,但它应该可以工作。
希望这可以帮助..