我有一个XML字符串:
<?xml version='1.0'?><response><error code='1'> Success</error></response>
一个元素和另一个元素之间没有分隔线,因此很难阅读。我想要一个函数来格式化上面的字符串:
<?xml version='1.0'?>
<response>
<error code='1'> Success</error>
</response>
不需要自己手动编写格式函数,有没有什么.Net库或代码片段可以让我随意使用呢?
发布于 2009-07-14 06:21:17
使用XmlTextWriter
...
public static string PrintXML(string xml)
{
string result = "";
MemoryStream mStream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mStream, Encoding.Unicode);
XmlDocument document = new XmlDocument();
try
{
// Load the XmlDocument with the XML.
document.LoadXml(xml);
writer.Formatting = Formatting.Indented;
// Write the XML into a formatting XmlTextWriter
document.WriteContentTo(writer);
writer.Flush();
mStream.Flush();
// Have to rewind the MemoryStream in order to read
// its contents.
mStream.Position = 0;
// Read MemoryStream contents into a StreamReader.
StreamReader sReader = new StreamReader(mStream);
// Extract the text from the StreamReader.
string formattedXml = sReader.ReadToEnd();
result = formattedXml;
}
catch (XmlException)
{
// Handle the exception
}
mStream.Close();
writer.Close();
return result;
}
发布于 2009-07-14 07:25:24
你将不得不以某种方式解析内容...我发现使用LINQ是最简单的方法。同样,这完全取决于您的确切场景。下面是一个使用LINQ格式化输入XML字符串的工作示例。
string FormatXml(string xml)
{
try
{
XDocument doc = XDocument.Parse(xml);
return doc.ToString();
}
catch (Exception)
{
// Handle and throw if fatal exception here; don't just ignore them
return xml;
}
}
为简洁起见,省略了using语句
发布于 2017-03-16 20:40:58
对我有效的简单解决方案是:
XmlDocument xmlDoc = new XmlDocument();
StringWriter sw = new StringWriter();
xmlDoc.LoadXml(rawStringXML);
xmlDoc.Save(sw);
String formattedXml = sw.ToString();
https://stackoverflow.com/questions/1123718
复制相似问题