C# xml和转发器

C# xml和转发器,c#,asp.net,xml,C#,Asp.net,Xml,我必须使用XPath链接我的XML文档吗 到中继器还是有其他方法 这是我的一些代码 第一页循环浏览数据并存储为XML: public virtual void Button_Click(object sender, EventArgs args) { TableControl recControls = (TableControl)this.Page.FindControlRecursively("TableControl");

我必须使用XPath链接我的XML文档吗 到中继器还是有其他方法

这是我的一些代码

第一页循环浏览数据并存储为XML:

public virtual void Button_Click(object sender, EventArgs args)
          {

             TableControl recControls = (TableControl)this.Page.FindControlRecursively("TableControl");
              if (recControls != null)
              {
                  TableControlRow[] rows = recControls.GetSelectedRecordControls();
                  this.Page.Session["RegistrationTableControl"] = rows;

                  // create XML writer to 
                  using(System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(@"c:\temp\reg.xml"))
                  {
                      XmlWriterSettings settings = new XmlWriterSettings();
                      settings.OmitXmlDeclaration = true;
                      settings.ConformanceLevel = ConformanceLevel.Fragment;
                      settings.CloseOutput = false;



                      writer.WriteStartDocument();
                      writer.WriteStartElement("SubContractors");
                      foreach(TableControlRow rec in rows)
                      {

                          writer.WriteElementString("SubContrator1", rec.BUSINESSNAME.Text);
                          writer.WriteElementString("SubContactName1", rec.OWNERNAME.Text);
                          writer.WriteElementString("SubAddress1", rec.ADDRESS.Text);
                          writer.WriteElementString("SubCity1", rec.CITY.Text);
                          writer.WriteElementString("SubState1", rec.STATE.Text);
                          writer.WriteElementString("SubZipCode1", rec.ZIPCODE.Text);
                          writer.WriteElementString("SubPhone1", rec.PHONE.Text);
                          writer.WriteElementString("SubFax1", rec.FAX.Text);
                          writer.WriteElementString("SubEmail1", rec.EMAIL.Text);
                          writer.WriteElementString("Status1", "Please enter information");
                          writer.WriteElementString("Referral", "1");

                      }
                      writer.WriteEndElement();
                      writer.WriteEndDocument();
                 }


              }}
它创建了我的xml文档

第2页代码:我需要获取新创建的XML文档中的数据,然后 使用此代码填充我的表格控制中继器工作

第2页

public override void DataBind()
    {
        base.DataBind();


        // Make sure that the DataSource is initialized.
        if (this.DataSource == null)
        {
            return;
        }
         // Setup the pagination controls.
        BindPaginationControls();

        // Populate all filters data.

        // Bind the repeater with the list of records to expand the UI.
        System.Web.UI.WebControls.Repeater rep = (System.Web.UI.WebControls.Repeater)(this.FindControl("TableControlRepeater"));
        rep.DataSource = this.DataSource;
        rep.DataBind();

        int index = 0;
        foreach (System.Web.UI.WebControls.RepeaterItem repItem in rep.Items)
        {

            // Make sure that the DataSource is initialized.


            // Loop through all rows in the table, set its DataSource and call DataBind().
            TableControlRow recControl = (TableControlRow)(repItem.FindControl("TableControlRow"));
            recControl.DataSource = this.DataSource[index];
            recControl.DataBind();
            recControl.Visible = !this.InDeletedRecordIds(recControl);
            index += 1;
        }
    }
我已经获取了XML数据,并将它们放在第2页,成为中继器的数据源

任何帮助或建议都是非常有用的。我真的不需要重写代码。

我使用


查询XML文档要容易得多。

LINQ To XML可能是完成此任务最简单的方法。看看斯科特·顾在上面

伪代码:

var xml = XDocument.Load(...);
reapeater.DataSource = from x in xml.Descendents("z") 
    where x.Attributes("y").Equals("select value") 
    select new { Value1 = x.Element("Value1"), Value2 = x.Element("Value2") };
repeater.DataBind();

是您将所有内容转换为XML(也是手动转换),然后再重新阅读,这是有原因的吗?问题(“z”)是,您必须根据XML输出来处理它;但是,根据您更新的代码,我可能建议使用XML序列化,因为它将是完全自动的。