将XML数据写入ASP.NET页面

4
我希望使用C#以XML格式在ASP.NET页面上展示我的数据。
<person>
    <email>a@a.com</email>
    <dob>YYYY-MM-DD- HH:MM:SS</dob>
    <city>XYZ</city>
</person>

你有任何带有示例的代码吗?

5个回答

8

在Html中格式化您的字符串

然后添加值

添加

Response.ClearHeaders();
Response.AddHeader("content-type", "text/xml");

然后将字符串写入浏览器

    response.write(yourstring);

example --

        string str = "<root>" + "<person>" + personName + "</person>";
        str += "<details>";
        str += "<DOB>" + "yyyy-MM-dd hh:mm:ss" + "</DOB>";
        str += "<City> " + "XYZ" + "</City>";
        str += "</details>";
        str += "</root>";
        Response.ClearHeaders();
        Response.AddHeader("content-type", "text/xml");
        Response.Write(str);
        Response.End();

将其构建为字符串是一个非常糟糕的想法,因为当数据没有被适当转义时,它将无效。 - Fred

2

我给你一个通用的解决方案

创建一个类 **

public class Person
    {
        public string Email { get; set; }
        public string DOB { get; set; }
        public string City { get; set; }
    }

**

然后在您的任何类库中编写此方法,如下所示

Public Class Utilities
{
    public static XmlElement Serialize(object transformObject)
            {
                XmlElement serializedElement = null;
                try
                {
                    MemoryStream memStream = new MemoryStream();
                    XmlSerializer serializer = new XmlSerializer(transformObject.GetType());
                    serializer.Serialize(memStream, transformObject);
                    memStream.Position = 0;
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(memStream);
                    serializedElement = xmlDoc.DocumentElement;
                }
                catch (Exception SerializeException)
                {

                }
                return serializedElement;
            }

}

现在在你的页面上编写这个主要函数,你想在这个任务中使用它。
private void MainMethod()
{
Collection<Person> mPersons = new Collection<Person>();
            //Fill your collection object mPersons with data 
            // I am giving here example for demo
            Person sPerson = new Person();
            sPerson.City = "City 1";
            sPerson.DOB = DateTime.Now.ToString("YYYY-MM-DD HH:MM:SS"); //just for example 
            sPerson.Email = "email_1@email.com";
            mPersons.Add(sPerson);
            //add another class object
            sPerson = new Person();
            sPerson.City = "City 2";
            sPerson.DOB = DateTime.Now.ToString("YYYY-MM-DD HH:MM:SS"); //just for example 
            sPerson.Email = "email_2@email.com";
            mPersons.Add(sPerson);

            XmlElement xE = (XmlElement)Utilities.Serialize(mPersons);
            XmlDocument xDoc = new XmlDocument();
            xDoc.LoadXml(xE.OuterXml.ToString());
            xDoc.Save(Server.MapPath("myFile.xml"));//give your file path name may be in your web application folder   

}

如果你有类对象或数据集,试试这个


1
我建议您使用Repeater控件。在该控件中添加表格到其ItemTemplate中。在按钮单击后,将xmlDataSource绑定到此Repeater上。
  <table>
     <ItemTamplate>
      <tr>
          <td colspan="3"><person></td>
      </tr>
      <tr>
        <td colspan="2"><email><%#Bind('email')%></email></td>
      </tr>
      <tr>
       <td></td> <td></td> <td><dob><%#Bind('date')%></dob></td>
      </tr>
      <tr>
        <td></td> <td></td> <td><city><%#Bind('city')%></city></td>
      </tr>
      <tr>
         <td colspan="3"></email></td>
      </tr>
    </person>
    </ItemTamplate>
    </table>

为什么? 我创建的表格模板将以 XML 格式显示。 你为什么认为它在浏览器中不会以 XML 格式显示? - AEMLoviji

1

使用System; using System.Xml; namespace WriteXmlFile { class Class1 { static void Main(string[] args) { // 首先,您必须将xml文件创建到任何位置 XmlTextWriter textWriter = new XmlTextWriter("D:\TestxmlFile.xml", null); // 要写入任何内容,您必须打开文档 textWriter.WriteStartDocument();

// 写入第一个元素 textWriter.WriteStartElement("Person"); textWriter.WriteStartElement("r", "RECORD", "urn:record"); // 写入下一个元素 textWriter.WriteStartElement("Email", ""); textWriter.WriteString("DOB"); textWriter.WriteString("City"); textWriter.WriteEndElement(); // 写入字符 string[] ch = new string[3]; ch[0] = "a@a.com"; ch[1] = "YYYY-MM-DD"; ch[2] = "xyz"; textWriter.WriteStartElement("Char"); textWriter.WriteChars(ch, 0, ch.Length); textWriter.WriteEndElement(); // 结束文档。 textWriter.WriteEndDocument(); // 关闭writer textWriter.Close(); } }

}

然后,你会发现所需的输出结果


问题是如何将其输出到浏览器,而不是保存到文件系统中。 - Fred

0

我认为最好在服务器端使用真正的XML文档对象,这样您可以确保向浏览器传递有效的XML。

像这样:

XmlDocument xml = new XmlDocument();
xml.LoadXml("<xmlcontent />");

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=filename.xml");
xml.Save(Response.OutputStream);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接