How to bind XML to a page in ASP?

本文关键字:to in ASP page bind XML How | 更新日期: 2023-09-27 18:29:05

我有一些类似的XML:

    <?xml version="1.0" encoding="utf-8" ?>
    <People>
      <Person id="1">
        <Name>
          <FirstName>Manoj</FirstName>
          <LastName>Syamala</LastName>
        </Name>
      </Person>
      <Person id="2">
        <Name>
          <FirstName>Anthony</FirstName>
          <LastName>Roberts</LastName>
        </Name>
      </Person>
   </People>

我希望能够在C#ASPX页面上显示它。对此,最好的方法是什么?我想在一页上显示PersonID = 1,然后按下下一个按钮,然后它用PersonID = 2替换该数据。我已经研究了使用ASP进行XML绑定的基础知识,但在TreeNodeBinding之后没有做太多工作(这不是我所需要的)。

谢谢。

How to bind XML to a page in ASP?

有很多方法可以做到这一点。但是,我建议您使用带有分页功能的DataGrid。将你的XML作为DataSource。等待示例代码。

好的,这是代码。

在aspx页面中创建一个GridView,如下所示。请注意,此GridView有一个TemplateField,因此您可以使用HTML表格式化数据。

 <asp:GridView ID="gvPeople" AllowPaging="True" runat="server" 
            AutoGenerateColumns="False" PageSize="1" 
            onpageindexchanging="gvPeople_PageIndexChanging">
        <Columns>
            <asp:TemplateField>                
                <HeaderTemplate>
                    <table border="0">
                        <tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <td>Name: </td><td><%# Eval("Name.FullName") %></td>
                </ItemTemplate>
                <FooterTemplate>
                    </tr>
                  </table>
                </FooterTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

你后面的代码应该像这个

using System;
using System.IO;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
namespace ReadXMLData
{
    public partial class ShowPeople : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadDataFromXML();
            }
        }
        private void LoadDataFromXML()
        {
            // Loads XML data from an external XML file
            XmlSerializer deserializer = new XmlSerializer(typeof(People));
            TextReader textReader = new StreamReader(@"D:'Temp'People.xml");
            People PeopleList = new People();
            PeopleList = (People)deserializer.Deserialize(textReader);
            textReader.Close();
            gvPeople.DataSource = PeopleList;
            gvPeople.DataBind();
        }
        protected void gvPeople_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            // GridView paging 
            gvPeople.PageIndex = e.NewPageIndex;
            LoadDataFromXML();
        }
    }
}

下面是用于创建保存XML数据的对象的支持类。

using System;
using System.Collections.Generic;
namespace ReadXMLData
{
    [Serializable]
    [System.Xml.Serialization.XmlRoot("People")]
    public class People : List<Person>
    {
    }
    [Serializable]
    public class Person
    {
        public Name Name { get; set; }
        public Person()
        {
            this.Name = new Name();
        }
    }
    [Serializable]
    public class Name
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName
        {
            get
            {
                return this.FirstName + " " + this.LastName;
            }
        }
        public Name()
        {
            this.FirstName = string.Empty;
            this.LastName = string.Empty;
        }
    }
}

希望这能有所帮助。