Tuesday, April 25, 2006

javascript XML parser

老板要求 Ajax 的 reponse 是 XML, 所以要找一个解析 xml 的 javascript 库。
因为已经用了 JSAN , 所以就在那找了个 XML.ObjTree
我用 XML::Writer 来构造 xml response. 比如说我们的 response 为
<xml><message>OK</message></xml>
然后 javascript 的代码大概为:
function ajax() {
var myAjax = new Ajax.Request( url, {
method: 'get',
parameters: pars,
onSuccess: showResponse,
} );
}
function showResponse(request) {
response = request.responseText;

JSAN.use('XML.ObjTree');
var xotree = new XML.ObjTree();
var tree = xotree.parseXML( response );

$('message').innerHTML = tree.xml.message;
}
这是针对回复只有一个 <message> 的。如果是多个 messages, javascript 的代码可以为:
for (i = 0; i < tree.xml.message.length; i++) {
唯一有点麻烦的是,我们期待回复的是 message array, 但是只有回了一个 message, 那这个 for 会失败,但是有 tree.xml.message 所以在 for 后面得加个
// ugly hack, for only one
if (tree.xml.message) {

Have fun!

2 Comments:

Anonymous chunzi said...

不管什么时候都返回列表不就可以了么?此外有兴趣的话还可以尝试 json 一种类似 yaml 的 js 数据结构表述方式,相比 xml 带宽消耗更小,而且易于手工编辑。

4/26/2006 1:50 PM  
Blogger Fayland said...

本来我是打算用 json 的。可老板说以后要写 API 返回的是 XML, 所以就一定要求返回 xml 结构。
返回的列表只有一个 message 的话,这个 JSAN 库就不会把它当成一个 array, 用 xml.message[0] 访问不到。只能用 xml.message. :)
chunzi 兄用什么库吗?

4/26/2006 3:11 PM  

Post a Comment

Links to this post:

Create a Link

<< Home