XDocument 分页

初试用XDocument来分页,代码如下,用在WebService里面,但框架需要4.0以上,用来读取XML,拼接成Json

    private string FilterJSON(string str)

    {

        return str.Replace("'", "%27").Replace("\"", "%22");

    }

    [WebMethod]

    public string GetPageNews(string pageNum, string pageRowCount)

    {

        int nPageNum = 0;

        int nPageRowCount = 0;

        if (!int.TryParse(pageNum, out nPageNum) || !int.TryParse(pageRowCount, out nPageRowCount))

        {

            return string.Empty;

        }

        XDocument doc = XDocument.Load(@"D:\Test\News.xml");

        var data = from d in doc.Descendants("News")

                   select d;

        var subData = data.Skip((nPageNum - 1) * nPageRowCount).Take(nPageRowCount);  // Paging.  

        StringBuilder sb = new StringBuilder();

        sb.Append("[");

        string strID = string.Empty;

        string strTitle = string.Empty;

        string strSummary = string.Empty;

        string strImageURL = string.Empty;

        string strDate = string.Empty;

        IEnumerable<XElement> dnas;

        #region 遍历

        foreach (var q in subData)

        {

            dnas = from node in q.Descendants() select node;

            foreach (XElement node in dnas)

            {

                switch (node.Name.LocalName)

                {

                    case "ID":

                        strID = node.Value;

                        break;

                    case "Title":

                        strTitle = node.Value;

                        break;

                    case "ImageURL":

                        strImageURL = node.Value;

                        break;

                    case "Summary":

                        strSummary = node.Value;

                        break;

                    case "Date":

                        strDate = node.Value;

                        break;

                    default:

                        break;

                }

            }

            sb.AppendFormat("{{\"ID\":\"{0}\",\"标题\":\"{1}\",\"摘要\":\"{2}\",\"图片地址\":\"{3}\",\"发布日期\":\"{4}\"}}",

          strID, FilterJSON(strTitle), FilterJSON(strSummary), strImageURL, strDate);

            sb.Append(",");

        }

        return sb.ToString().Trim(',') + "]";

        #endregion

    }

    [WebMethod]

    public string GetNewsDetail(string id)

    {



        XDocument doc = XDocument.Load(@"D:\TestNews.xml");

        var data = from d in doc.Root.Descendants("News")

                   where d.Element("ID").Value == id.ToString()

                   select d;

        var subData = data.Take(1);

        StringBuilder sb = new StringBuilder();

        string strID = string.Empty;

        string strTitle = string.Empty;

        string strSource = string.Empty;//来源

        string strBody = string.Empty;//正文

        string strBImageURL = string.Empty;//大图地址

        string strSImageURL = string.Empty;//小图地址

        string strDate = string.Empty;

        IEnumerable<XElement> dnas;

        //Console.WriteLine("count:" + subData.Count());

        #region 遍历

        foreach (var q in subData)

        {

            dnas = from node in q.Descendants() select node;

            foreach (XElement node in dnas)

            {

                switch (node.Name.LocalName)

                {

                    case "ID":

                        strID = node.Value;

                        break;

                    case "Title":

                        strTitle = node.Value;

                        break;

                    case "Source":

                        strSource = node.Value;

                        break;

                    case "Body":

                        strBody = node.Value;

                        break;

                    case "BImageURL":

                        strBImageURL = node.Value;

                        break;

                    case "SImageURL":

                        strSImageURL = node.Value;

                        break;

                    case "Date":

                        strDate = node.Value;

                        break;

                    default:

                        break;

                }

            }

            sb.AppendFormat("{{\"ID\":\"{0}\",\"标题\":\"{1}\",\"发布时间\":\"{2}\",\"来源\":\"{3}\",\"正文\":\"{4}\",\"小图地址\":\"{5}\",\"大图地址\":\"{6}\"}}",

          strID, FilterJSON(strTitle), strDate, FilterJSON(strSource), FilterJSON(strBody), strSImageURL, strBImageURL);

        }

        #endregion

        return sb.ToString();

    }

    [WebMethod]

  

你可能感兴趣的:(document)