+ -
当前位置:首页 → 问答吧 → 不能直接解析Web Services输出的XML?

不能直接解析Web Services输出的XML?

时间:2011-01-06

来源:互联网

AS3里无法直接使用Web Services,所以我想直接读取输出的XML,读是能读到,但是不能像普通的XML那样读里面的内容,和一般的RSS的区别就是一个是RSS,一个是XmlList,请大家帮忙一下

作者: redhairlee   发布时间: 2011-01-06

不管XML来自哪里,到了AS应该都是一样的

作者: flash023   发布时间: 2011-01-06

但是很奇怪的是,RSS出来的直接用,Web Services的出来就用不了,看某一个节点的length永远是0,按照原有的方法去取值也永远是空的。

作者: redhairlee   发布时间: 2011-01-06

我没有遇到过这种情况。
楼主再检查一下输出是XML还是字符串

作者: flash023   发布时间: 2011-01-06

麻烦帮我看一下,谢谢
复制内容到剪贴板
代码:
var URLString:String = "http://www.shanghaidaily.com/iPadWebService/webservice/news.asmx/MoreTopArticleList";
            var XMLRequest:URLRequest = new URLRequest(URLString);
            XMLRequest.method = URLRequestMethod.GET;
            var XMLLoader:URLLoader = new URLLoader(XMLRequest);
            XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded);
            function xmlLoaded(event:Event):void
            {
                var rssList:List = new List();
                rssList.x = 0;
                rssList.y = 0;
                rssList.height = 600;
                rssList.width = 250;
                
                var dp:DataProvider = new DataProvider();
                var rssXML:XML = new XML(XMLLoader.data);
                trace(rssXML.ArticleList.SHDArticle.length());
                dp.addItem({label:"AAA", data:"BBB"});
                rssList.dataProvider = dp;
                addChild(rssList);
            }

作者: redhairlee   发布时间: 2011-01-06

复制内容到剪贴板
代码:
var URLString:String="http://www.shanghaidaily.com/iPadWebService/webservice/news.asmx/MoreTopArticleList";
var XMLRequest:URLRequest=new URLRequest(URLString);
var XMLLoader:URLLoader=new URLLoader(XMLRequest);
function xmlLoaded(event:Event):void {    
    var rssXML:XML=new XML(XMLLoader.data);
    trace(rssXML.children().length());//输出3,没有问题
}
XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded);

作者: flash023   发布时间: 2011-01-06

这样确实是可以取到值了,但是我通过节点名字直接用“.”访问就不对了。。。不知道为什么,还是先谢谢斑竹了。

作者: redhairlee   发布时间: 2011-01-06

比如像我之前写的:
trace(rssXML.ArticleList.SHDArticle.length());
就无法取到值,理论上来说,这个应该和
trace(rssXML.children().children().length());
一样的吧?

作者: redhairlee   发布时间: 2011-01-06

这是因为你的XML 根节点带了命名空间

如何解析带命名空间的XML,以前有过讨论,楼主搜索一下就可以解决。

作者: flash023   发布时间: 2011-01-06

好的,谢谢了,我去搜索一下,有什么问题再来麻烦你,哈哈

作者: redhairlee   发布时间: 2011-01-06