C#对xml的操作(此为一个信息提醒代码)

代码如下:

xml.xml

<?xml version="1.0" encoding="utf-8"?>
<root>
  <message userid="1234" id="1">
    <user>1234</user>
    <isvisit>1</isvisit>
    <visitdate>20070514</visitdate>
  </message>
  <message userid="123" id="1">
    <user>123</user>
    <isvisit>1</isvisit>
    <visitdate>20070514</visitdate>
  </message>
  <message userid="Aadmin" id="1">
    <user>Aadmin</user>
    <isvisit>1</isvisit>
    <visitdate>20070514</visitdate>
  </message>
  <message userid="123" id="2">
    <user>123</user>
    <isvisit>1</isvisit>
    <visitdate>20070514</visitdate>
  </message>
  <message userid="Aadmin" id="2">
    <user>Aadmin</user>
    <isvisit>0</isvisit>
    <visitdate>20070514</visitdate>
  </message>
</root> 

操纵此xml的C#代码

#region 得到新盘提醒和房源跟进提醒

  /// <summary>
  /// 得到新盘提醒和房源跟进提醒
  /// </summary>
  /// <returns></returns>
  public string CheckRealtyBuildingNew()
  {
   string PageID ="80.01.03";//为楼盘PageID
   string thisPageRight="";
   string corp_No = PrivateConst.Corp_No;
   string htmlStr=""; 
   string buildUrl = "",reCordUrl="";
   string curTime = PublicConst.DateCalForDay(-1);
   thisPageRight = DataCommon.GetPageRight(userid,PageID);
   //for xml.xml
   numCount = new Realty.DataMethod().CheckUserInXmlNodeNum(userid); 
   numCountReCord = new Realty.DataMethod().CheckUserInXmlNodeNumForReCord(userid);
   bool isHave =false;//用来判断是否有提醒信息 false没有,true有
   if (thisPageRight.Length >0)
   {
    // 浏览权限
    if (thisPageRight[0] =='1' &&  corp_No != "")
    {
     if (!CheckUserIsInXml(userid,numCount))
     {
      new Realty.DataMethod().CreateUserToXml(userid,numCount);
      numCount = numCount +1;
     }     
     AGENT_BUILDING m = new AGENT_BUILDING();
     m = new Realty.DataMethod().GetAGENT_BUILDINGNew(corp_No);
     if (m != null)
     {     
      string buildDate = m.DATAINS_TIME.Substring(0,8);     
      string paras = Realty.DataMethod.ParamsEncode(m.ARREA_NO,m.BLD_NO);
      //for  xml.xml
      string isvisit = new Realty.DataMethod().GetNodeTextInXml(userid,"isvisit",numCount).Trim();      
      string visitdate = new Realty.DataMethod().GetNodeTextInXml(userid,"visitdate",numCount).Trim();      

      buildUrl = "<a href=/"Realty//Basic//Agent_BuildingForm.aspx?paras="+paras+"&ran="+PublicConst.DataValueString();//for xml.xml
      reCordUrl = "<a href=/"Realty//HouseOwner//Trace_RecordFrame.aspx?paras=new&ran="+PublicConst.DataValueString();//for record.xml

      htmlStr +="<table width=/"575/" border=/"0/" cellspacing=/"0/" cellpadding=/"0/">";
      htmlStr +="<tr height=/"25/"> ";
      htmlStr +="<td width=/"35/" align=/"center/"><img src=/"img/announce.gif/" width=/"20/" height=/"16/"></td><td width=/"540/"><marquee scrollAmount=3> ";

      //for xml.xml
      if (buildDate.CompareTo(curTime) == 0 && isvisit.CompareTo("0") ==0 && visitdate.CompareTo(PublicConst.DateNowToday8) < 0)
      { 
       htmlStr +="  · {0}"+"/" οnclick=/"SetVisitXml()/" title=/"点击查看详细/" target=/"_self/">您有新楼盘了!...</a>&nbsp;&nbsp;<font color='#808080'>"+buildDate+"</font> ";
       isHave =true;
      }
      // for record.xml
      if (!CheckUserIsInXmlReCord(userid,numCountReCord))
      {
       new Realty.DataMethod().CreateUserToXmlReCord(userid,numCountReCord);
       numCountReCord = numCountReCord +1;
      }
      //for record.xml
      string isvisitReCord = new Realty.DataMethod().GetNodeTextInXmlReCord(userid,"isvisit",numCountReCord).Trim();
      string visitdateReCord = new Realty.DataMethod().GetNodeTextInXmlReCord(userid,"visitdate",numCountReCord).Trim();
      if (new Realty.DataMethod().CheckIsTrace_RecordNew(userid) && isvisitReCord.CompareTo("0") ==0 && visitdateReCord.CompareTo(PublicConst.DateNowToday8) < 0)
      {
       htmlStr +="  · {1}"+"/" οnclick=/"SetVisitXmlReCord()/" title=/"点击查看详细/" target=/"_self/">您有房源没有及时跟进!...</a>&nbsp;&nbsp;<font color='red'><sup>New</sup></font> ";
       isHave =true;
      }
      htmlStr +=" </marquee></td> ";
      htmlStr +="  </tr> ";
      htmlStr +=" </table> ";
       
     }     
    }    
   }
   if (isHave)
   {
    return string.Format(htmlStr,buildUrl,reCordUrl);
   }
   else
    return "";
   
  }

  #endregion

  #region 检查登录用户是否存在xml里面 xml.xml

  /// <summary>
  /// 检查登录用户是否存在xml里面 xml.xml
  /// </summary>
  /// <param name="user"></param>
  /// <returns></returns>
  private bool CheckUserIsInXml(string user,int num)
  {
   try
   {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyPath);
    bool isTrue1 =false,isTrue2 =false,isTrue3 =false,isTrue4 =false;
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("root").ChildNodes;//获取root节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
     if(xe.GetAttribute("userid")==user && xe.GetAttribute("id")==num.ToString())//如果useid属性值为 user
     {      
      XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
      foreach(XmlNode xn1 in nls)//遍历
      {
       XmlElement xe2=(XmlElement)xn1;//转换类型 ||
       if(xe2.Name=="visitdate" && xe2.InnerText == PublicConst.DateCalForDay(-1))//如果找到
       {       
        isTrue1 = true;
//        SendMail.SendDebug("4");
       }
       if(xe2.Name=="visitdate" && xe2.InnerText == PublicConst.DateNowToday8)//如果找到
       {
        isTrue2=true;
       }
       if (xe2.Name=="isvisit" && xe2.InnerText == "1")
       {
        isTrue3 = true;
//        SendMail.SendDebug("3");
       }
       if (xe2.Name=="isvisit" && xe2.InnerText == "0")
       {
        isTrue4 = true;
//        SendMail.SendDebug("3");
       }
      }
//      SendMail.SendDebug("1");
     }
//     SendMail.SendDebug("2");
    }
    if (isTrue1 && isTrue4)
    {
     return true; 
    }
    else if (isTrue2 && isTrue3)
    {
     return true;
    }
    else
     return false;
       
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
    return false;
   }
  }
  #endregion

  #region  检查登录用户是否存在xml里面 record.xml

  /// <summary>
  /// 检查登录用户是否存在xml里面 record.xml
  /// </summary>
  /// <param name="user"></param>
  /// <returns></returns>
  private bool CheckUserIsInXmlReCord(string user,int num)
  {
   try
   {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyReCordPath);
    bool isTrue1 =false,isTrue2 =false,isTrue3 =false,isTrue4 =false;
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("root").ChildNodes;//获取root节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
     if(xe.GetAttribute("userid")==user && xe.GetAttribute("id")==num.ToString())//如果useid属性值为 user
     {      
      XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
      foreach(XmlNode xn1 in nls)//遍历
      {
       XmlElement xe2=(XmlElement)xn1;//转换类型 ||
       if(xe2.Name=="visitdate" && xe2.InnerText == PublicConst.DateCalForDay(-1))//如果找到
       {       
        isTrue1 = true;
        //SendMail.SendDebug("4");
       }
       if(xe2.Name=="visitdate" && xe2.InnerText == PublicConst.DateNowToday8)//如果找到
       {
        isTrue2=true;
       }
       if (xe2.Name=="isvisit" && xe2.InnerText == "1")
       {
        isTrue3 = true;
        //SendMail.SendDebug("3");
       }
       if (xe2.Name=="isvisit" && xe2.InnerText == "0")
       {
        isTrue4 = true;
        //SendMail.SendDebug("3");
       }
      }
      //SendMail.SendDebug("1");
     }
     //SendMail.SendDebug("2");
    }
    if (isTrue1 && isTrue4)
    {
     return true; 
    }
    else if (isTrue2 && isTrue3)
    {
     return true;
    }
    else
     return false;
       
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
    return false;
   }   
  }
  #endregion

#region RealtyXML

  /// <summary>
  /// 检查登录用户在xml节点的个数 in realty/xml.xml
  /// </summary>
  /// <param name="user"></param>
  /// <returns></returns>
  public int CheckUserInXmlNodeNum(string user)
  {
   try
   {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyPath);  
    int num =0;
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("root").ChildNodes;//获取root节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
     //方法1
     //     XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
     //     foreach(XmlNode xn1 in nls)//遍历
     //     {
     //      XmlElement xe2=(XmlElement)xn1;//转换类型
     //      if(xe2.Name=="user" && xe2.InnerText == user)//如果找到
     //      {       
     //       return true;       
     //      }      
     //     }
     //方法2  减少循环次数
     if(xe.GetAttribute("userid")==user)//如果useid属性值为 user
     {
      num ++;
     }
     
    }  
    return num;    
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
    throw new PrivateException(CheckData.SubStringLine(exp.Message));    
   }
  }

  /// <summary>
  /// 检查登录用户在xml节点的个数in realty/record.xml
  /// </summary>
  /// <param name="user"></param>
  /// <returns></returns>
  public int CheckUserInXmlNodeNumForReCord(string user)
  {
   try
   {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyReCordPath);  
    int num =0;
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("root").ChildNodes;//获取root节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型     
     if(xe.GetAttribute("userid")==user)//如果useid属性值为 user
     {
      num ++;
     }
     
    }  
    return num;    
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
    throw new PrivateException(CheckData.SubStringLine(exp.Message));    
   }
  }
  /// <summary>
  /// 得到xml节点的值paras:user , nodeName   eg:GetNodeTextInXml("admin","user"); 返回admin用户的user节点值 xml.xml
  /// </summary>
  /// <param name="user"></param>
  /// <returns></returns>
  public string GetNodeTextInXml(string userid,string nodeName,int num)
  {
   try
   {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyPath);  
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("root").ChildNodes;//获取root节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
     if(xe.GetAttribute("userid")==userid && xe.GetAttribute("id")==num.ToString())//如果userid属性值为“123”
     {      
      XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
      foreach(XmlNode xn1 in nls)//遍历
      {
       XmlElement xe2=(XmlElement)xn1;//转换类型       
       if(xe2.Name==nodeName)//如果找到
       {        
        return xe2.InnerText;        
       }       
      }      
     }     
    }  
    return "";    
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
    throw new PrivateException(CheckData.SubStringLine(exp.Message));    
   }
  }
  /// <summary>
  /// 得到xml节点的值paras:user , nodeName   eg:GetNodeTextInXml("admin","user"); 返回admin用户的user节点值 record.xml
  /// </summary>
  /// <param name="user"></param>
  /// <returns></returns>
  public string GetNodeTextInXmlReCord(string userid,string nodeName,int num)
  {
   try
   {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyReCordPath);  
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("root").ChildNodes;//获取root节点的所有子节点
    foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
     if(xe.GetAttribute("userid")==userid && xe.GetAttribute("id")==num.ToString())//如果userid属性值为“123”
     {      
      XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
      foreach(XmlNode xn1 in nls)//遍历
      {
       XmlElement xe2=(XmlElement)xn1;//转换类型       
       if(xe2.Name==nodeName)//如果找到
       {        
        return xe2.InnerText;        
       }       
      }      
     }     
    }  
    return "";    
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
    throw new PrivateException(CheckData.SubStringLine(exp.Message));    
   }
  }
  /// <summary>
  /// 没有xml节点就创建xml.xml
  /// </summary>
  /// <param name="user"></param>
  public void CreateUserToXml(string user,int num)
  {
   try
   {
    num = num +1;
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyPath);  
    XmlNode root=xmlDoc.SelectSingleNode("root");//查找<root>
    XmlElement xe1=xmlDoc.CreateElement("message");//创建一个<message>节点
    xe1.SetAttribute("userid",user);//设置该节点userid属性
    xe1.SetAttribute("id",num.ToString());//设置该节点id属性
    //1
    XmlElement xesub1=xmlDoc.CreateElement("user");
    xesub1.InnerText=user;//设置文本节点
    xe1.AppendChild(xesub1);//添加到<message>节点中
    //2
    XmlElement xesub2=xmlDoc.CreateElement("isvisit");
    xesub2.InnerText="0";
    xe1.AppendChild(xesub2);
    //3
    XmlElement xesub3=xmlDoc.CreateElement("visitdate");
    xesub3.InnerText=PublicConst.DateCalForDay(-1);
    xe1.AppendChild(xesub3); 
   
    root.AppendChild(xe1);//添加到<root>节点中
    xmlDoc.Save(Realty.DataMethod.SettingRealtyPath);//save
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
//    throw new PrivateException(CheckData.SubStringLine(exp.Message));
   }
  }
  /// <summary>
  /// 没有xml节点就创建record.xml
  /// </summary>
  /// <param name="user"></param>
  public void CreateUserToXmlReCord(string user,int num)
  {
   try
   {
    num = num +1;
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.Load(Realty.DataMethod.SettingRealtyReCordPath);  
    XmlNode root=xmlDoc.SelectSingleNode("root");//查找<root>
    XmlElement xe1=xmlDoc.CreateElement("message");//创建一个<message>节点
    xe1.SetAttribute("userid",user);//设置该节点userid属性
    xe1.SetAttribute("id",num.ToString());//设置该节点id属性
    //1
    XmlElement xesub1=xmlDoc.CreateElement("user");
    xesub1.InnerText=user;//设置文本节点
    xe1.AppendChild(xesub1);//添加到<message>节点中
    //2
    XmlElement xesub2=xmlDoc.CreateElement("isvisit");
    xesub2.InnerText="0";
    xe1.AppendChild(xesub2);
    //3
    XmlElement xesub3=xmlDoc.CreateElement("visitdate");
    xesub3.InnerText=PublicConst.DateCalForDay(-1);
    xe1.AppendChild(xesub3); 
   
    root.AppendChild(xe1);//添加到<root>节点中
    xmlDoc.Save(Realty.DataMethod.SettingRealtyReCordPath);//save
   }
   catch (Exception exp)
   {
    SendMail.SendMailToManager(exp.ToString());
//    throw new PrivateException(CheckData.SubStringLine(exp.Message));
   }
  }

  /// <summary>
  /// 检查是否超过一个星期的房源没有跟进  日期的比较在sql中 eg:to_char(SYSDATE,'YYYYMMDD')-7 表示一个星期前
  /// </summary>
  /// <returns></returns>
  public bool CheckIsTrace_RecordNew(string user)
  {
   StringBuilder sb = new StringBuilder();
   sb.Append(" SELECT MAX(T.CORP_NO), MAX(T.ARREA_NO), MAX(T.BLD_NO), MAX(T.ITEM_NO)  ");
   sb.Append("   FROM TRACE_RECORD T  ");
   sb.Append("  WHERE T.DATAINS_USRID = '{0}'  ");
   sb.Append("    AND T.YYYYMMDD <= (TO_CHAR(SYSDATE, 'YYYYMMDD')-7)  ");
   sb.Append("  GROUP BY T.CORP_NO, T.ARREA_NO, T.BLD_NO, T.PRO_NO  ");
   string sql = string.Format(sb.ToString(),user);
   SendMail.SendDebug("检查是否超过一个星期的房源没有跟进SQL:"+sql);
   DataSet ds=OracleHelper.GetDataSet(sql);
   if(ds.Tables[0].Rows.Count>0)
   {
    return true;
   }
   else{
    return false;
   }
  }
  #endregion

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rjzou2006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值