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
<code> </code><code>function test(){</code>
<code> </code><code>var</code> <code>xmlString =</code><code>"<bookstore>"</code><code>+</code>
<code> </code><code>"<book Type='必修课' ISBN='7-111-19149-2'>"</code><code>+</code>
<code> </code><code>"<title>数据结构</title>"</code><code>+</code>
<code> </code><code>"<author>严蔚敏</author>"</code><code>+</code>
<code> </code><code>"<price>30.00</price>"</code><code>+</code>
<code> </code><code>"</book></bookstore>"</code><code>;</code>
<code> </code><code>$.ajax({</code>
<code> </code><code>type: </code><code>"post"</code><code>,</code>
<code> </code><code>url: </code><code>"Hand/Ajax.ashx"</code><code>,</code>
<code> </code><code>data: </code><code>"strxml="</code><code>+xmlString,</code>
<code> </code><code>datatype:</code><code>"xml"</code><code>,</code>
<code> </code><code>success: function(xml){</code>
<code> </code><code>//根据resultText更新页面</code>
<code> </code><code>alert(</code><code>"success"</code><code>);</code>
<code> </code><code>alert($(xml).find(</code><code>'Table1'</code><code>).find(</code><code>'title'</code><code>).text());</code>
<code> </code><code>},</code>
<code> </code><code>error:function(XMLResponse){alert(XMLResponse.responseText)}</code>
<code>});</code>
<code>}</code>
前台出入的是XML格式的参数,后台该如何操作呢?这个有针对XML读写,这里就简单的说明一下:
<code>XmlDocument xdoc = </code><code>new</code> <code>XmlDocument();<br></code><code>//xml字符串操作</code>
<code>xdoc.LoadXml(strxml);</code><code>//读取xml字符串strxml</code>
<code>xdoc.Load(fileName);</code><code>//读取xml文件fileName是文件的路径</code>
以上简单说明LoadXml和Load简单用法,这里就不做详细说明。下面是后台处理前台的xml格式的参数
<code>// 得到根节点bookstore</code>
<code>XmlNode xn = xdoc.SelectSingleNode(</code><code>"bookstore"</code><code>);</code>
<code>// 得到根节点的所有子节点</code>
<code>XmlNodeList xnl = xn.ChildNodes;</code>
<code>// 将节点转换为元素,便于得到节点的属性值</code>
<code>XmlElement xe = (XmlElement)(xnl.Item(0));</code>
<code>// 得到Type和ISBN两个属性的属性值</code>
<code>string</code> <code>bookISBN = xe.GetAttribute(</code><code>"ISBN"</code><code>).ToString();</code>
<code>string</code> <code>bookType = xe.GetAttribute(</code><code>"Type"</code><code>).ToString();</code>
<code>// 得到Book节点的所有子节点</code>
<code>XmlNodeList xnl0 = xe.ChildNodes;</code>
<code>string</code> <code>bookName = xnl0.Item(0).InnerText;</code>
<code>string</code> <code>bookAuthor = xnl0.Item(1).InnerText;</code>
<code>double</code> <code>bookPrice = Convert.ToDouble(xnl0.Item(2).InnerText);</code>
后台处理之后,返回xml格式的数据,当然这个前提context.Response.ContentType = "text/xml";
<code>DataSet ds = </code><code>new</code> <code>DataSet();</code>
<code>ds = GetList();</code>
<code>context.Response.Clear();</code>
<code>context.Response.Write(ds.GetXml()); </code>
<code>private</code> <code>DataSet GetList()</code>
<code>{</code>
<code> </code><code>DataSet ds = </code><code>new</code> <code>DataSet();</code>
<code> </code><code>DataTable dt = </code><code>new</code> <code>DataTable();</code>
<code> </code><code>dt.Columns.Add(</code><code>"title"</code><code>);</code>
<code> </code><code>dt.Columns.Add(</code><code>"author"</code><code>);</code>
<code> </code><code>dt.Columns.Add(</code><code>"price"</code><code>);</code>
<code> </code><code>DataRow dr = dt.NewRow();</code>
<code> </code><code>dr[</code><code>"title"</code><code>] = </code><code>"book1"</code><code>;</code>
<code> </code><code>dr[</code><code>"author"</code><code>] = </code><code>"matest"</code><code>;</code>
<code> </code><code>dr[</code><code>"price"</code><code>] = 30.01;</code>
<code> </code><code>dt.Rows.Add(dr);</code>
<code> </code><code>ds.Tables.Add(dt);</code>
<code> </code><code>return</code> <code>ds;</code>
这个是jQuery+Ajax+xml的应用
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/4642722.html,如需转载请自行联系原作者