js分类中有一节【原生js异步请求,XML解析】主要说明了js前台是如何处理XML格式请求和如何接受由服务器返回的XML数据的解析,今天我将用一个实例来说明具体要如何操作.
前台的参数类型也是XML使用的是jquery:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function test(){
var xmlString ="<bookstore>"+
"<book Type='必修课' ISBN='7-111-19149-2'>"+
"<title>数据结构</title>"+
"<author>严蔚敏</author>"+
"<price>30.00</price>"+
"</book></bookstore>";
$.ajax({
type: "post",
url: "Hand/Ajax.ashx",
data: "strxml="+xmlString,
datatype:"xml",
success: function(xml){
//根据resultText更新页面
alert("success");
alert($(xml).find('Table1').find('title').text());
},
error:function(XMLResponse){alert(XMLResponse.responseText)}
});} |
前台出入的是XML格式的参数,后台该如何操作呢?这个有针对XML读写,这里就简单的说明一下:
|
1
2
|
XmlDocument xdoc = new XmlDocument();<br>//xml字符串操作
xdoc.LoadXml(strxml);//读取xml字符串strxml
|
// Add a price element.添加一个节点
XmlElement newElem = doc.CreateElement("price");
newElem.InnerText = "10.95";
doc.DocumentElement.AppendChild(newElem);//添加一个节点
|
1
|
xdoc.Load(fileName);//读取xml文件fileName是文件的路径
|
以上简单说明LoadXml和Load简单用法,这里就不做详细说明。下面是后台处理前台的xml格式的参数
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 得到根节点bookstoreXmlNode xn = xdoc.SelectSingleNode("bookstore");
// 得到根节点的所有子节点XmlNodeList xnl = xn.ChildNodes;// 将节点转换为元素,便于得到节点的属性值XmlElement xe = (XmlElement)(xnl.Item(0));// 得到Type和ISBN两个属性的属性值string bookISBN = xe.GetAttribute("ISBN").ToString();
string bookType = xe.GetAttribute("Type").ToString();
// 得到Book节点的所有子节点XmlNodeList xnl0 = xe.ChildNodes;string bookName = xnl0.Item(0).InnerText;
string bookAuthor = xnl0.Item(1).InnerText;
double bookPrice = Convert.ToDouble(xnl0.Item(2).InnerText);
|
后台处理之后,返回xml格式的数据,当然这个前提context.Response.ContentType = "text/xml";
|
1
2
3
4
|
DataSet ds = new DataSet();
ds = GetList();context.Response.Clear();context.Response.Write(ds.GetXml()); |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private DataSet GetList()
{ DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("title");
dt.Columns.Add("author");
dt.Columns.Add("price");
DataRow dr = dt.NewRow();
dr["title"] = "book1";
dr["author"] = "matest";
dr["price"] = 30.01;
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds;
} |
这个是jQuery+Ajax+xml的应用