如何显示XML?
如何显示XML?
WebRequest req = HttpWebRequest.Create("http://example.com/example"); WebResponse res = req.GetResponse(); StreamReader sr = new StreamReader(res.GetResponseStream()); string str = sr.ReadToEnd(); XmlDocument doc = new XmlDocument(); doc.LoadXml(str); XmlTextWriter writer = new XmlTextWriter("D://myGameSite//myGames.xml", null); writer.Formatting = Formatting.Indented; doc.Save(writer); // 将 XML 文件内容输出到响应中以在浏览器中显示 Response.ContentType = "text/xml"; Response.Write(doc.InnerXml);
\n现在这段代码完美地工作,即将 XML 文件保存在 myGameSite 的根目录下,并命名为 myGames。但是,当我尝试在浏览器中显示该 XML 文件时,它只是简单地显示以下内容:\nSystem.Xml.XmlDocument
\n我想在浏览器中显示包含标签的 XML 文件,并且我的 asp.net 和 .netframework 版本是 2.0,因此请注意我无法使用 LINQ 🙁
问题出现的原因是需要将XML内容进行展示,但是目前的代码只能将XML内容写入文件,没有进行格式化和展示。解决方法是修改代码,将XML内容写入输出流并进行格式化展示。
具体的解决方法如下:
1. 首先将XML内容写入输出流,并设置输出流的格式为"text/xml":
Response.ContentType = "text/xml"; Response.Write(str);
2. 为了进行格式化展示,需要使用XmlWriterSettings类来设置输出流的格式选项,例如设置缩进:
var settings = new XmlWriterSettings(); settings.Indent = true;
3. 使用XmlWriter类将格式化后的XML内容写入输出流:
using(var writer = XmlWriter.Create(Response.Output, settings)) { doc.Save(writer); }
整理后的代码如下:
Response.ContentType = "text/xml"; Response.Write(str); var settings = new XmlWriterSettings(); settings.Indent = true; using(var writer = XmlWriter.Create(Response.Output, settings)) { doc.Save(writer); }
问题:如何显示XML?
原因:在给定的代码中,有人询问如何显示XML。可能是因为在处理XML数据时,需要将其以可读的方式显示出来,以便于调试或查看。
解决方法:提供了两种解决方法。第一种方法是使用Response.Write
将XML以预格式显示在网页上。该方法使用Server.HtmlEncode
函数对XML进行编码,然后将其放置在<pre>
和<code>
标签中显示。第二种方法是在一个多行文本框中显示XML。需要设置TextMode
为MultiLine
,并将XML内容赋值给文本框的Text
属性。
代码示例:
Response.Write("<pre><code>" + Server.HtmlEncode(doc.InnerXml) + "</code></pre>"); // This will preserve indentation txtXml.Text = doc.InnerXml;注意:如果需要保留XML的缩进格式,可以使用
<pre>
标签。或者可以使用多行文本框来显示XML。编辑:将
<pre>
标签添加到代码中,可以保留XML的缩进格式。或者可以使用多行文本框来显示XML。