初试用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]