zoukankan      html  css  js  c++  java
  • Flex RIA的ArcIMS WebGIS之路(四)获取数据,解析与操作XML

    不知道什么原因,Flex到现在都没有提供直接访问数据库的功能,而WebGIS系统的后台通常是一个企业级数据库,伤透了脑筋啊,举目四望,竟然束手无策,翻遍了资料才找到的救命稻草--XML。没有办法啦,只好用学了半吊子DOM来应付数据访问问题了。如何访问数据库?通过httpRequest与Asp.net交互,Asp.Net把数据库查询的结果通过DataSet.WriteXML将XML格式的结果返回给Flash文件。幸好,DataSet生成的XML格式是固定的,不然解析就麻烦咯!怎么解析呢?Flex提供了有点奇怪的XML访问方式,当然也是兼容DOM的啦!通常需要遍历获取数据例如查询了名称后绑定到ComboBox上面怎么做呢?
    protected function SelectionChanged(e:Event):void
      {
       
       if( m_hook.Map.MapSelection != "")
       {
        m_DataSource = new XMLList(m_hook.Map.MapSelection);
        this.cbName.dataProvider = m_DataSource.Table;
        BindSubItem();
        var singleItem:XMLList = new XMLList(cbName.selectedItem.toString());
        LocateFeature(singleItem.child("OBJECTID").toString());
       }
       else
       {
        this.cbName.dataProvider = null;
        this.dgProperty.dataProvider = null;
       }
      }
    其中的m_DataSource 就是一段XML的数据啦,通过OBJECTID等子节点的名称就可以访问到数据啦。还是挺方便的。
    而遍历节点也很方便
    for(var DataNode:String in QueryResult.child(ArcXML.NodeResponse).child(ArcXML.NodeFeatures).child(ArcXML.NodeFeature))
       {
        var featrueNode:XMLList = new XMLList(QueryResult.child(ArcXML.NodeResponse).child(ArcXML.NodeFeatures).child(ArcXML.NodeFeature)[DataNode]);
        FieldID = featrueNode.child(ArcXML.NodeFields).child(ArcXML.NodeField).attribute(ArcXML.AttributeFieldName).toString();
        var FieldIDValue:String = featrueNode.child(ArcXML.NodeFields).child(ArcXML.NodeField).attribute(ArcXML.AttributeFieldValue).toString();
        valueArray.push( FieldIDValue);
        
       }
    ArcXML.*****都是ArcXML的关键字,为方便起见,定义一个ArcXML的类,将这些关键字定义成静态常量,便于统一管理。这段代码就是将ArcXML的返回结果进行解析,这是一个多层查询的例子,遍历每一层的选择集,获取数据。不用多说了吧。

  • 相关阅读:
    在Ubuntu下使用命令删除目录
    Visual Studio添加lib到链接依赖项的几种方法
    svn回到某个历史版本的做法
    iOS菜鸟成长笔记(3)——斯坦福公开课学习(1)
    VS自定义开发向导中的vsdir文件的简单说明
    OpenGL编程逐步深入(十一)组合变换
    iOS菜鸟成长笔记(2)——网易彩票练习
    AngularJs轻松入门(九)与服务器交互
    AngularJs轻松入门(八)Cookies读写
    AngularJs轻松入门(七)多视图切换
  • 原文地址:https://www.cnblogs.com/Brune/p/622850.html
Copyright © 2011-2022 走看看