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的返回结果进行解析,这是一个多层查询的例子,遍历每一层的选择集,获取数据。不用多说了吧。

  • 相关阅读:
    11gR2新特性:STANDBY_MAX_DATA_DELAY
    ASM file metadata operation等待事件
    Slide:配置GoldenGate同步DDL语句
    C++中Static作用和使用方法
    LPARAM类型转化为CString类型
    Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
    C++ inline函数 介绍
    C++ 注册表编程
    C++中L和_T()之区别
    枚举的访问方式
  • 原文地址:https://www.cnblogs.com/Brune/p/622850.html
Copyright © 2011-2022 走看看