如何用js读取WebService返回的XML结果!

aqqzy 2005-10-18 05:17:27
利用js调用WebService,返回类型是DataSet,可返回的形式是XML的格式。
我想在js中取得返回的结果。可总是错误,请大家帮帮忙!

返回的XML如下:

<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns="http://localhost/WebApp/">
- <xs:schema id="ChatList" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="ChatList" msdata:IsDataSet="true" msdata:Locale="zh-CN">
- <xs:complexType>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="List">
- <xs:complexType>
- <xs:sequence>
<xs:element name="PostName" type="xs:string" minOccurs="0" />
<xs:element name="PostTime" type="xs:string" minOccurs="0" />
<xs:element name="PostBody" type="xs:string" minOccurs="0" />
<xs:element name="Flag" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">

- <ChatList xmlns="">
- <List diffgr:id="List1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<PostName>200510309952</PostName>
<PostTime>2005年10月18日 17:03:50</PostTime>
<PostBody>111</PostBody>
<Flag>0</Flag>
</List>
- <List diffgr:id="List2" msdata:rowOrder="1" diffgr:hasChanges="inserted">
<PostName>200510309952</PostName>
<PostTime>2005年10月18日 17:03:51</PostTime>
<PostBody>222</PostBody>
<Flag>0</Flag>
</List>
- <List diffgr:id="List3" msdata:rowOrder="2" diffgr:hasChanges="inserted">
<PostName>200510309952</PostName>
<PostTime>2005年10月18日 17:03:52</PostTime>
<PostBody>333</PostBody>
<Flag>0</Flag>
</List>
</ChatList>

</diffgr:diffgram>
</DataSet>

我现在只想取得ChatList之间PostName,PostTime,PostBody,Flag的这部分,该怎么做。

我的代码是这么写的,总是出错。

var xmlResult = event.result.raw.xml;
if(xmlResult != "" && xmlr != null)
{
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
xmlDoc.async=false;
xmlDoc.validateOnParse=false;
xmlDoc.load(xmlResult);
for (var i = 0;i < xmlDoc.getElementsByTagName("List").length;i ++)
{
if(xmlDoc.getElementsByTagName("List").item(i).childNodes(3).text == IPU)
{
MSG.innerHTML += "<font color=red>" + xmlDoc.getElementsByTagName("List").item(i).childNodes(0).text + " "
+ xmlDoc.getElementsByTagName("List").item(i).childNodes(1).text + "</font><br>"
+ xmlDoc.getElementsByTagName("List").item(i).childNodes(2).text + "<br>";
}
}
}


大家帮我看看,应该怎么读取!

...全文
248 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxiaodong123 2010-06-13
  • 打赏
  • 举报
回复
学习学习!
likeful 2005-11-17
  • 打赏
  • 举报
回复
var xmlResult = event.result.value;
然后
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
xmlDoc.async=false;
xmlDoc.loadXML(xmlResult);
然后用var nodes = xmlDoc.selectNodes("//List");
for (var i=0;i<nodes.length;i++)
kk = nodes[i].text;

试试! 我现在和你一样,利用webservice和js做实施刷新就是这样读到的c#中返回的dataset
还有dataset中返回的是
DataSet ds;
return ds.getxml()
ljhyp_cn 2005-11-01
  • 打赏
  • 举报
回复
楼主:
你的xml很复杂,一看就知道时用.net中的dataset.toxml来的.不好.建议你自己写这个xml文件
<?xml version="1.0" encoding="utf-8" ?>
<DataSet>
- <List id="List1" >
<PostName>200510309952</PostName>
<PostTime>2005年10月18日 17:03:50</PostTime>
<PostBody>111</PostBody>
<Flag>0</Flag>
</List>
- <List id="List2" >
<PostName>200510309952</PostName>
<PostTime>2005年10月18日 17:03:51</PostTime>
<PostBody>222</PostBody>
<Flag>0</Flag>
</List>
- <List id="List3" >
<PostName>200510309952</PostName>
<PostTime>2005年10月18日 17:03:52</PostTime>
<PostBody>333</PostBody>
<Flag>0</Flag>
</List>
</DataSet>

<script language="JavaScript">
var _dom=new ActiveXObject("MSXML2.DOMDocument");
_dom.async=false;
_dom.load("MyXml.xml");
//采用xpath;
//可以指定具体的那个list
//var node=_dom.selectSingleNode("//List[@id='List3']");
//全部list
var nodes = _dom.selectNodes("//List");
for(var i=0;i<nodes.length;i++)
{
var listname=nodes[i].getAttribute("id");
var PostName=_dom.selectSingleNode("//List[@id='"+listname+"']/PostName").text
alert(PostName);
var PostTime=_dom.selectSingleNode("//List[@id='"+listname+"']/PostTime").text
alert(PostTime);
}

</script>
绝对ok这里主要时用xpath定位
zjyong0123 2005-11-01
  • 打赏
  • 举报
回复
参考一下http://weblogs.asp.net/mschwarz/archive/2003/03/30/4480.aspx,也许对你有帮助
hyena 2005-10-21
  • 打赏
  • 举报
回复
出什么错?
aqqzy 2005-10-20
  • 打赏
  • 举报
回复
没有人回复让我如何结贴!
aqqzy 2005-10-19
  • 打赏
  • 举报
回复
没有人愿意帮忙吗?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧