代码如下:
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> <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> <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