初试用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]
浙公网安备 33010602011771号