<?xml version="1.0" encoding="utf-8"?>
<ErrorInfo>
  <Error>
    <LOpertionID ID="20120827164554950">
      <StudentID ID="84">
        <LQuestionID ID="0">
          <LDateID ID="0">
            <LErrorReportingID ID="1">
              <FErrorNumber ID="0" />
            </LErrorReportingID>
            <LErrorReportingID ID="2">
              <FErrorNumber ID="0" />
            </LErrorReportingID>
            <LErrorReportingID ID="3">
              <FErrorNumber ID="0" />
            </LErrorReportingID>
            <LErrorReportingID ID="4">
              <FErrorNumber ID="0" />
            </LErrorReportingID>
          </LDateID>
        </LQuestionID>
        <LQuestionID ID="1">
          <LDateID ID="30017">
            <LErrorReportingID ID="1">
              <FErrorNUmber ID="0" />
            </LErrorReportingID>
            <LErrorReportingID ID="2">
              <FErrorNUmber ID="0" />
            </LErrorReportingID>
            <LErrorReportingID ID="3">
              <FErrorNUmber ID="0" />
            </LErrorReportingID>
            <LErrorReportingID ID="4">
              <FErrorNUmber ID="0" />
            </LErrorReportingID>
          </LDateID>
        </LQuestionID>
      </StudentID>
    </LOpertionID>
  </Error>
</ErrorInfo>请问一下,我要怎么绑定lquestionID为1,LdateID为30017,LErrorReportingID为1的FErrorNumber
这个是我现在的代码protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rep1 = e.Item.FindControl("repnumber1") as Repeater;//找到里层的repeater对象
                Repeater rep2 = e.Item.FindControl("repnumber2") as Repeater;
                Repeater rep3 = e.Item.FindControl("repnumber3") as Repeater;
                Repeater rep4 = e.Item.FindControl("repnumber4") as Repeater;
                //DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 
                //int typeid = Convert.ToInt32(rowv["FID"]); //获取填充子类的id
                XmlDocument xml = new XmlDocument();
                string url = Server.MapPath("Xml\\20120827164554950.xml");
                xml.Load(url);
                XmlNode root = xml.SelectSingleNode("ErrorInfo/Error");
                XmlNodeList nodelist = xml.SelectSingleNode("ErrorInfo/Error/LOpertionID/StudentID").ChildNodes;
                foreach (XmlNode xn1 in nodelist)
                {
                    XmlElement xe1 = (XmlElement)xn1;
                    if (xe1.GetAttribute("ID") == lid.ToString())
                    {
                        XmlNodeList lis = xe1.ChildNodes;
                        foreach (XmlNode xn2 in lis)
                        {
                            XmlElement xe2 = (XmlElement)xn2;
                            if (xe2.GetAttribute("ID") == "30016")
                            {
                                XmlNodeList list = xe2.ChildNodes;
                                foreach (XmlNode xn in list)
                                {
                                    XmlElement xe = (XmlElement)xn;
                                    if (xe.GetAttribute("ID") == "1")
                                    {
                                        DataSet dss = XmlObject.GetXmlData(url, "ErrorInfo/Error/LOpertionID/StudentID/LQuestionID/LDateID/LErrorReportingID/FErrorNumber");
                                        rep1.DataSource = dss;
                                        rep1.DataBind();
                                    }
                                    if (xe.GetAttribute("ID") == "2")
                                    {
                                        DataSet dss = XmlObject.GetXmlData(url, "ErrorInfo/Error/LOpertionID/StudentID/LQuestionID/LDateID/LErrorReportingID/FErrorNumber");
                                        rep2.DataSource = dss;
                                        rep2.DataBind();
                                    }
                                    if (xe.GetAttribute("ID") == "3")
                                    {
                                        DataSet dss = XmlObject.GetXmlData(url, "ErrorInfo/Error/LOpertionID/StudentID/LQuestionID/LDateID/LErrorReportingID/FErrorNumber");
                                        rep3.DataSource = dss;
                                        rep3.DataBind();
                                    }
                                    if (xe.GetAttribute("ID") == "4")
                                    {
                                        DataSet dss = XmlObject.GetXmlData(url, "ErrorInfo/Error/LOpertionID/StudentID/LQuestionID/LDateID/LErrorReportingID/FErrorNumber");
                                        rep4.DataSource = dss;
                                        rep4.DataBind();
                                        break;
                                    }
                                }
                            }
                        }
                    }

解决方案 »

  1.   

    @TheDolphin   
    如果不用xpath嘞?
      

  2.   

    首先不明白你的意思。。Repeater1 这个你是怎么绑定的。。你的这个控件里面再套控件。。这么麻烦。。
    你一开始是怎么绑定Repeater1 的。然后这个事件只要根据绑定的 去匹配对应的节点xml有方法可以根据你给定的名称获取到对应的节点,而不需要整体的遍历。。你这个效率相当低啊。。
      

  3.   

    @紫魂  因为,我一部分的数据是放在数据库里面的,一部分数据是放在xml里面的,所以才用嵌套的
      

  4.   

    在线请加我QQ [email protected] ,我想问相关的问题