现在的位置: 首页 > 综合 > 正文

faxapp解析XML文件

2013年12月10日 ⁄ 综合 ⁄ 共 9316字 ⁄ 字号 评论关闭

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Xml.XPath;
using System.Security.Cryptography;//MD5函数命名空间

namespace faxapp
{
    public partial class faxtest : System.Web.UI.Page
    {
        //---------------------取传真状态变量-------------------
        public string[] y = new string[5];
        string userid;
        protected DateTime showtime = new DateTime();
        long timestamp;
        string check;
        string password;
        string strmd5;
        string starttime="2007-7-1 00:00:00";//每次的起始时间
        string endtime = System.DateTime.Now.ToString();//每次的结束时间
        int item;//faxitem下的元素个数
        //END---------------------------------------------------
        protected void Page_Load(object sender, EventArgs e)
        {
            FetchSendFaxState();
        }

        //-----------------------确定发送的传真状态,录入数据库中(解析XML文件)-------------------------
        public void FetchSendFaxState()
        {
            userid = System.Configuration.ConfigurationManager.AppSettings.Get("FaxUserId");
            password = System.Configuration.ConfigurationManager.AppSettings.Get("Mailpassword");
            timestamp = showtime.Ticks;
            strmd5 = userid + password + timestamp;
            check = getMD5(strmd5);//给check赋上以MD5形式加密的内容

            string strxml = "http://www.gfax.cn/queryinterface/querytask.php?message-id=&starttime=" + starttime + "&userid=" + userid + "&endtime=" + System.DateTime.Now.ToString() + "&faxno=&faxstatus=&subuser=&timestamp=" + timestamp + "&check=" + check;
            //try
            //{
                //取得XML文件
                XmlDocument xmlDoc = new XmlDocument();

                xmlDoc.Load(strxml);//xml文件
                Response.Write(strxml);
                //解析返回的XML文件
                XmlNodeList xmlList = xmlDoc.SelectSingleNode("gfaxroot").ChildNodes;
                //解析faxitem结合集里的元素值
                XmlNodeList faxItems = xmlDoc.DocumentElement.SelectNodes("faxtask");
                item = faxItems.Count;
                Response.Write("二级子接点有"+item+"个<br>");
                string[,] fi = new string[item, 11];
                //遍历gfaxroot下的所有子接点
                foreach (XmlNode xmlNo in xmlList)
                {
                    XmlElement xe = (XmlElement)xmlNo;
                    {
                        if (xe.Name == "result")//是否成功
                        {
                            y[0] = xe.InnerText;
                        }

                        if (xe.Name == "count")//任务总数
                        {
                            y[1] = xe.InnerText;
                        }

                        if (xe.Name == "success")//任务总数中成功的次数
                        {
                            y[2] = xe.InnerText;
                        }

                        if (xe.Name == "failed")//任务总数中失败的次数
                        {
                            y[3] = xe.InnerText;
                        }
                        if (xe.Name == "description")//查询结果描述
                        {
                            y[4] = xe.InnerText;
                        }
                    }
                }

                //测试结果
                if (y[0].ToString().Trim() != "0")
                {
                    Response.Write("<font color='red'>请李福云从新回到代码中仔细查看:</font><br>");
                    Response.Write("<font color='red'>result值:" + y[0].ToString() + "</font><br>");
                    Response.Write("<font color='red'>count值:" + y[1].ToString() + "</font><br>");
                    Response.Write("<font color='red'>success值:" + y[2].ToString() + "</font><br>");
                    Response.Write("<font color='red'>failed值:" + y[3].ToString() + "</font><br>");
                    Response.Write("<font color='red'>description值:" + y[4].ToString() + "</font><br>");
                    Response.Write("<font color='red'>错误原因为:" + y[4].ToString() + "</font><br>");
                }
                else if (y[0].ToString().Trim().Equals("0"))
                {
                    //取所有faxitem接点下的值
                    for (int i = 0; i < item; i++)
                    {
                        foreach (XmlNode xmlNo in faxItems[i])
                        {
                            XmlElement xe = (XmlElement)xmlNo;
                            {
                                if (xe.Name == "taskid")//任务ID,是主健值
                                {
                                    fi[i,0] = xe.InnerText;
                                }

                                if (xe.Name == "subtime")//提交时间
                                {
                                    fi[i,1] = xe.InnerText;
                                }

                                if (xe.Name == "custid")//用户帐号
                                {
                                    fi[i,2] = xe.InnerText;
                                }

                                if (xe.Name == "faxno")//接受传真号码
                                {
                                    fi[i,3] = xe.InnerText;
                                }
                                if (xe.Name == "starttime")//传真开始处理时间
                                {
                                    fi[i,4] = xe.InnerText;
                                }
                                if (xe.Name == "endtime")//传真结束处理时间
                                {
                                    fi[i,5] = xe.InnerText;
                                }
                                if (xe.Name == "cost")//传真开始处理时间到传真结束处理时间的通话长(以秒来计算)
                                {
                                    fi[i,6] = xe.InnerText;
                                }
                                if (xe.Name == "fee")//每个传真任务所需费用
                                {
                                    fi[i,7] = xe.InnerText;
                                }
                                if (xe.Name == "status")//查询结果状态描述,为代码显示区别即发送状态
                                {
                                    fi[i,8] = xe.InnerText;
                                }
                                if (xe.Name == "description")//查询结果描述
                                {
                                    fi[i,9] = xe.InnerText;
                                }
                                if (xe.Name == "messageid")//邮件编号MessageID
                                {
                                    fi[i,10] = xe.InnerText;
                                }
                            }
                        }
                    }

                    //打印测试结果
                    Response.Write("------------------------------测试结果------------------------<br>");
                    Response.Write("<font color='red'>一级接点gfaxroot下所有子接点值查看:</font><br>");
                    Response.Write("<font color='red'>result值:" + y[0].ToString() + "</font><br>");
                    //Response.Write("<font color='red'>count值:" + y[1].ToString() + "</font><br>");
                    //Response.Write("<font color='red'>success值:" + y[2].ToString() + "</font><br>");
                    //Response.Write("<font color='red'>failed值:" + y[3].ToString() + "</font><br>");
                    Response.Write("<font color='red'>description值:" + y[4].ToString() + "</font><br>");
                    Response.Write("--------------------------------------------------------------<br>");
                    Response.Write("<font color='red'>二级接点faxitem下所有子接点值查看:</font><br>");
                    Response.Write("--------------------------------------------------------------<br>");
                    for (int i = 0; i < item; i++)
                    {
                        Response.Write("<font color='red'>第" + (i + 1) + "条:</font><br>");
                        Response.Write("<font color='red'>taskid值:" + fi[i,0].ToString() + "</font><br>");
                        Response.Write("<font color='red'>subtime值:" + fi[i,1].ToString() + "</font><br>");
                        Response.Write("<font color='red'>custid值:" + fi[i,2].ToString() + "</font><br>");
                        Response.Write("<font color='red'>faxno值:" + fi[i,3].ToString() + "</font><br>");
                        Response.Write("<font color='red'>starttime值:" + fi[i,4].ToString() + "</font><br>");
                        Response.Write("<font color='red'>endtime值:" + fi[i,5].ToString() + "</font><br>");
                        Response.Write("<font color='red'>cost值:" + fi[i,6].ToString() + "</font><br>");
                        Response.Write("<font color='red'>fee值:" + fi[i,7].ToString() + "</font><br>");
                        Response.Write("<font color='red'>status值:" + fi[i,8].ToString() + "</font><br>");
                        Response.Write("<font color='red'>description值:" + fi[i,9].ToString() + "</font><br>");
                        Response.Write("<font color='red'>messageid值:" + fi[i,10].ToString() + "</font><br>");
                        Response.Write("--------------------------------------------------------------<br>");
                    }
                }

            //}
            //catch
            //{
            //    Response.Write("<font color='red'>错误原因:没有Internet网连接,请检查Internet网连接状态!</font><br>");
            //}
        }

        //MD5加密方法
        public static string getMD5(string str)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] data = System.Text.Encoding.Default.GetBytes(str);
            byte[] result = md5.ComputeHash(data);
            String ret = "";
            for (int i = 0; i < result.Length; i++)
                ret += result[i].ToString("x").PadLeft(2, '0');
            return ret;
        }
        //End-----------------------------------------------------------------------------------------
    }
}
 

抱歉!评论已关闭.