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

  • 相关阅读:
    文档的几何形状和滚动
    聊聊并发——生产者消费者模式
    在JavaScript中什么时候使用==是正确的?
    HTML5使用canvas画图时,图片被自动放大模糊的问题
    获取元素的几种方式
    利用jQuery和CSS实现环形进度条
    最实用、最常用的jQuery代码片段
    表格样式
    javascript常量的定义
    null 和 undefined 的区别
  • 原文地址:https://www.cnblogs.com/Brune/p/622850.html
Copyright © 2011-2022 走看看