Asp.net 用xml文档绑定控件

从网上收集,官方demo案例有几种绑定的方法

 

第一种,绑定很简单用DataSet 代替xml文档进行控件绑定

 

后台代码

 

    string xmlPath = "~/userxml/historyDataLine.xml";

 

    protected void Page_Load(object sender, EventArgs e)

    {

        DataSet ds= new DataSet();

        ds.ReadXml(Server.MapPath(xmlPath));

 

        this.GridView1.DataSource = ds.Tables[0];//ds.Tables["LINE_PARA"]这样也行

        this.GridView1.DataBind();

    }

 

 

xml文档内容

 

<?xml version="1.0" standalone="yes"?>

<x1>

  <LINE_PARA>

    <CONDUCTD>23.000</CONDUCTD>

    <CONDUCTA>2001.0</CONDUCTA>

    <CONDUCTTC>71.00</CONDUCTTC>

    <CONDUCTR25>1.0001</CONDUCTR25>

    <CONDUCTR75>1.0001</CONDUCTR75>

    <CONDUCTZ1>1</CONDUCTZ1>

    <CONDUCTLATITUDE>31.000</CONDUCTLATITUDE>

    <CONDUCTALTITUDE>21.0</CONDUCTALTITUDE>

    <CONDUCTEMISSIVITY>1.5000</CONDUCTEMISSIVITY>

    <CONDUCTABSORBTIVITY>1.5000</CONDUCTABSORBTIVITY>

    <AIRINDEX>1</AIRINDEX>

    <CAPACITY_WM_IEEE_TEST>0</CAPACITY_WM_IEEE_TEST>

    <CAPACITY_WM_GB_TEST>0</CAPACITY_WM_GB_TEST>

    <CAPACITY_CTM_IEEE_TEST>0</CAPACITY_CTM_IEEE_TEST>

    <CAPACITY_CTM_GB_TEST>0</CAPACITY_CTM_GB_TEST>

  </LINE_PARA>

  <LINE_PARA>

    <CONDUCTD>12</CONDUCTD>

    <CONDUCTA>20</CONDUCTA>

  </LINE_PARA>

  <LINE_PARA>

    <CONDUCTD>8</CONDUCTD>

    <CONDUCTA>1</CONDUCTA>

    <CONDUCTTC>7</CONDUCTTC>

    <CONDUCTR25>4</CONDUCTR25>

    <CONDUCTR75>-6</CONDUCTR75>

    <CONDUCTZ1>6</CONDUCTZ1>

    <CONDUCTLATITUDE>6</CONDUCTLATITUDE>

    <CONDUCTALTITUDE>8</CONDUCTALTITUDE>

    <CONDUCTEMISSIVITY>8</CONDUCTEMISSIVITY>

    <CONDUCTABSORBTIVITY>-5</CONDUCTABSORBTIVITY>

    <AIRINDEX>6</AIRINDEX>

  </LINE_PARA>

  <LINE_PARA>

    <CONDUCTD>8</CONDUCTD>

    <CONDUCTA>1</CONDUCTA>

    <CONDUCTTC>7</CONDUCTTC>

    <CONDUCTR25>4</CONDUCTR25>

    <CONDUCTR75>-6</CONDUCTR75>

    <CONDUCTZ1>6</CONDUCTZ1>

    <CONDUCTLATITUDE>6</CONDUCTLATITUDE>

    <CONDUCTALTITUDE>8</CONDUCTALTITUDE>

    <CONDUCTEMISSIVITY>8</CONDUCTEMISSIVITY>

    <CONDUCTABSORBTIVITY>-5</CONDUCTABSORBTIVITY>

    <AIRINDEX>6</AIRINDEX>

  </LINE_PARA>

</x1>

 

 

 

第2中方法:

 

怎么读取网页中的xml文档,绑定相应的控件

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="txtXml3.aspx.cs" Inherits="txtXml3" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected void Page_Load( object sender, System.EventArgs e )

  {

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

    doc.Load("http://dotnet.aspx.cc/Rss.aspx");

    XmlDataSource1.Data = doc.InnerXml;

    XmlDataSource1.XPath = "/rss/channel/item";

  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

 

<asp:GridView ID="GridView1" runat="server" DataSourceID="XmlDataSource1" AutoGenerateColumns="false">

      <Columns>

        <asp:TemplateField HeaderText="文章标题">

          <ItemTemplate>

            <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%#XPath("link") %>'>

            <%#XPath("title")%></asp:HyperLink>

            [<%#(DateTime.Parse(XPath("pubDate").ToString().Replace("GMT",""))).ToString("yyyy年M月d日")%>]

          </ItemTemplate>

        </asp:TemplateField>

      </Columns>

    </asp:GridView>

    <asp:XmlDataSource ID="XmlDataSource1" runat="server"></asp:XmlDataSource>

 

    </div>

    </form>

</body>

</html>

动态绑定网站的Rss发布内容,比较新颖这功能我很喜欢。http://dotnet.aspx.cc/Rss.aspx
第3种方法:
用XmlDataSource 微软自带的 数据源绑定GridView
前台:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:GridView ID="GridView1" runat="server" DataSourceID="XmlDataSource1" 
            AutoGenerateColumns="False">
         <Columns>
             <asp:BoundField DataField="CONDUCTD" HeaderText="CONDUCTD" 
                 SortExpression="CONDUCTD" />
             <asp:BoundField DataField="CONDUCTA" HeaderText="CONDUCTA" 
                 SortExpression="CONDUCTA" />
         </Columns>
     
    </asp:GridView>
        <asp:XmlDataSource ID="XmlDataSource1" runat="server" 
            DataFile="~/userxml/historyDataLine1.xml" XPath="/*/*/*"></asp:XmlDataSource>
    </div>
    </form>
</body>
</html>
用xpath 表达式    越过xml一些标签得到你想要绑定的属性.     /*/*/*  
在下面文档是  跳过x1-->x1-><x1 CONDUCTD="23.000" CONDUCTA="2001.0" />
得到两个表的列CONDUCTD, CONDUCTA  x1是表,我是这样理解的.
xml文档
文档1
<?xml version="1.0" encoding="utf-8" ?>
<x1>
  <x1>
    <x1 CONDUCTD="23.000" CONDUCTA="2001.0" />
    <x1 CONDUCTD="25.000" CONDUCTA="3001.0" />
  </x1>
</x1>
文档2

<x1>

  <LINE_PARA>

    <CONDUCTD>23.000</CONDUCTD>

    <CONDUCTA>2001.0</CONDUCTA>

    <CONDUCTTC>71.00</CONDUCTTC>

    <CONDUCTR25>1.0001</CONDUCTR25>

    <CONDUCTR75>1.0001</CONDUCTR75>

    <CONDUCTZ1>1</CONDUCTZ1>

    <CONDUCTLATITUDE>31.000</CONDUCTLATITUDE>

    <CONDUCTALTITUDE>21.0</CONDUCTALTITUDE>

    <CONDUCTEMISSIVITY>1.5000</CONDUCTEMISSIVITY>

    <CONDUCTABSORBTIVITY>1.5000</CONDUCTABSORBTIVITY>

    <AIRINDEX>1</AIRINDEX>

    <CAPACITY_WM_IEEE_TEST>0</CAPACITY_WM_IEEE_TEST>

    <CAPACITY_WM_GB_TEST>0</CAPACITY_WM_GB_TEST>

    <CAPACITY_CTM_IEEE_TEST>0</CAPACITY_CTM_IEEE_TEST>

    <CAPACITY_CTM_GB_TEST>0</CAPACITY_CTM_GB_TEST>

  </LINE_PARA>

<x1>

 

文档2是不能用这种xpath表达式的 /*/*/* 要这种格式<x1 CONDUCTD="23.000" CONDUCTA="2001.0" />牢记

 

第4种用模板列的形式绑定,这里要声明一下是通过路径绑定属性 新颖.

 

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>Order</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:XmlDataSource
        runat="server"
        id="XmlDataSource1"
        XPath="orders/order"
        DataFile="order.xml" />

      <asp:Repeater ID="Repeater1"
        runat="server"
        DataSourceID="XmlDataSource1">
        <ItemTemplate>
            <h2>Order</h2>
            <table>
              <tr>
                <td>Customer</td>
                <td><%#XPath("customer/@id")%></td>
                <td><%#XPath("customername/firstn")%></td>
                <td><%#XPath("customername/lastn")%></td>
              </tr>
              <tr>
                <td>Ship To</td>
                <td><%#XPath("shipaddress/address1")%></font></td>
                <td><%#XPath("shipaddress/city")%></td>
                <td><%#XPath("shipaddress/state")%>,
                    <%#XPath("shipaddress/zip")%></td>
              </tr>
            </table>
            <h3>Order Summary</h3>
            <asp:Repeater ID="Repeater2"
                 DataSource='<%#XPathSelect("summary/item")%>'
                 runat="server">
                <ItemTemplate>
                     <b><%#XPath("@dept")%></b> -
                         <%#XPath(".")%><br />
                </ItemTemplate>
            </asp:Repeater>
            <hr />
        </ItemTemplate>
    </asp:Repeater>

  </form>
  </body>
</html>

 

xml文档
<?xml version="1.0" encoding="iso-8859-1"?>
 <orders>
   <order>
     <customer id="12345" />
     <customername>
         <firstn>John</firstn>
         <lastn>Smith</lastn>
     </customername>
     <transaction id="12345" />
     <shipaddress>
         <address1>1234 Tenth Avenue</address1>
         <city>Bellevue</city>
         <state>Washington</state>
         <zip>98001</zip>
     </shipaddress>
     <summary>
         <item dept="tools">screwdriver</item>
         <item dept="tools">hammer</item>
         <item dept="plumbing">fixture</item>
     </summary>
   </order>
</orders>

 

如:<%#XPath("customername/firstn")%> 代表xml文档的<customername><firstn>John</firstn></customername>

这个属性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值