如何显示XML?

时间:2012-02-03 06:10:22

标签: c# asp.net 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);**strong text**
    Response.Write(doc);

现在这段代码工作正常我的意思是它将XML文件保存在myGameSite的根目录中,文件名为myGames,但是当我尝试在浏览器中显示这个XML文件时,你可以在代码中看到,它只是明白地显示这个

    System.Xml.XmlDocument

我想在我的浏览器中显示这个XML文件以及标签,我的asp.net和.netframework的版本是2.0所以请不要使用LINQ :(

8 个答案:

答案 0 :(得分:5)

这样做;)

Response.Write("<pre><code>" + Server.HtmlEncode(doc.InnerXml) + "</code></pre>");

修改

或者您可以在textarea中显示xml

<asp:TextBox ID="txtXml" runat="server" TextMode="MultiLine" Height="500px" Width="600px" />

背后的代码

// This will preserve indentation 
    txtXml.Text = doc.InnerXml;

答案 1 :(得分:1)

由于您有可用的xml,str,只需写下:

Response.Write(str);

请注意,这不包括任何格式更改 - 如果您需要,您需要再次 xml(到输出),或者加载刚才写的文件。您还需要将响应类型更改为“text / xml”。不相关,但请注意您还应该关闭作者,最好是using

var settings = new XmlWriterSettings();
settings.Indent = true;
using(var writer = XmlWriter.Create(path, settings)) {
  doc.Save(writer);
}

您也可以重复Save

using(var writer = XmlWriter.Create(Response.Output, settings)) {
  doc.Save(writer);
}

答案 2 :(得分:1)

google“pretty print xml c#”;例如http://www.expertcore.org/viewtopic.php?t=1101

你会找到工作代码,我敢肯定。这是一个例子:Format XML String to Print Friendly XML String

doc.OuterXml传递给您找到的该函数;它会吐出缩进的xml

将此xml设置为readonly more或某个标签中的某个多行文本框;除非它是textbox / textarea,否则你必须对其进行html编码(例如标签):

this.someLabel.Text = this.Server.HtmlEncode(prettyPrintedXml)

答案 3 :(得分:1)

对于那些使用C#作为后端和角度作为前端mcv框架的人,以下代码将起作用(一种变通方法)。

[BACK-END]
using Newtonsoft.Json;
using System.Xml;
//-----
public ActionResult QueryGenerator(string naturalQuery)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(path_to_xml);
    string jsonText = JsonConvert.SerializeXmlNode(doc);

    return Json( new{xmlString = jsonText}, JsonRequestBehavior.AllowGet);
}

[JAVASCRIPT]
$http({
    method: 'GET',
    url: baseUrl + 'QueryGenerator',
    params: params
}).
  success(function (data, status, config) {
      $scope.xmlList = JSON.parse(data.xmlString);
  }).
  error(function (data, status, config) {
     alert('error');
  });

[HTML]
<xmp ng-repeat="node in xmlList track by $index">
    <Discource>
        <Token>
            <Term>{{node.Term}}</Term>
            <PosTag>{{node.PosTag}}</PosTag>
            <Restriction>{{node.Restriction}}</Restriction>
            <Synonyms>{{node.Synonyms}}</Synonyms>
        </Token>
    </Discource>
</xmp>

enter image description here

答案 4 :(得分:0)

在你的最后一行使用

Response.Write(doc.InnerXml);

答案 5 :(得分:0)

使用XmlDatasource和数据控件(GridView / Repeator)显示XML文档数据。

<?xml version="1.0" encoding="iso-8859-1"?>
 <root>
   <foo>
     <bar>One</bar>
   </foo>
   <foo>
     <bar>Two</bar>
   </foo>
 </root>

标记:

<asp:XmlDataSource
    runat="server"
    id="XmlDataSource1"
    XPath="root/foo"
    DataFile="file.xml" />

<asp:Repeater ID="Repeater1"
    runat="server"
    DataSourceID="XmlDataSource1">
    <ItemTemplate>
       <h2>Bar :<%#XPath("bar")%> </h2>
    </ItemTemplate>
</asp:Repeater>

答案 6 :(得分:0)

请尝试以下代码:

<link rel="prev" href="http://www.example.com/article-part1.html">
<link rel="next" href="http://www.example.com/article-part3.html">

答案 7 :(得分:0)

只需使用XMP标签......它将缩进并使您的xml几乎看起来漂亮!

<XMP>
  <po>
    <BeginningSegment_BEG>
      <TransactionSetPurposeCode_01>00</TransactionSetPurposeCode_01>
      <PurchaseOrderTypeCode_02>NE</PurchaseOrderTypeCode_02>
      <PurchaseOrderNumber_03>PO01183082</PurchaseOrderNumber_03>
      <Date_05>2016-12-14</Date_05>
    </BeginningSegment_BEG>
  </po>
</XMP>

在浏览器中显示如下: xmp output

在Chrome和IE中它对我有用