ArcGIS Flex API 中的 Flex 技术(四)--XML 解析

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
XML已经成为一种数据传输标准,解析XML是现在任何一门语言的基本功能,解析XML需要先了解XML的组成结构、遍历方式,可以先在互联网搜索。使用ArcGIS Flex API去解析XML的一个主要场景是在"回调"阶段,Demo "Reading GeoRSS feeds"中的GeoRSSUtil.as包含了一些基本应用方法。

复制代码
ExpandedBlockStart.gif Code
package com.esri.ags.samples
{

import com.esri.ags.geometry.Geometry;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.geometry.Polygon;

import mx.utils.StringUtil;
    
public class GeoRSSUtil
{
    private static const GEORSS : Namespace 
= Namespaces.GEORSS_NS;
    private static const GEOWGS : Namespace 
= Namespaces.GEOWGS_NS;
    private static const GEO : Namespace 
= Namespaces.GEO_NS;
    private static const GML : Namespace 
= Namespaces.GML_NS;
     
    public 
function GeoRSSUtil(singletonEnforcer:SingletonEnforcer)
    {
    }

    public static 
function toGeometry( x : XML ) : Geometry
    {
        const geoLat : String 
= String(x.GEOWGS::lat );
        const geoLon : String 
= String(x.GEOWGS::long );
        
if( geoLat && geoLon )
        {
            
return new MapPoint( Number( geoLon ), Number( geoLat ));
        }
        
        const georssPoint : String 
= String(x.GEORSS::point);
        
if( georssPoint )
        {
            
return parseGeoRSSPoint(georssPoint);
        }
        
        const pointList : XMLList 
= x.GEO::point;
        
if( pointList && pointList.length() > 0 )
        {
            const geoPoint : XML 
= pointList[0];
            const geoPLat : Number 
= Number(geoPoint.GEO::lat);
            const geoPLon : Number 
= Number(geoPoint.GEO::long);
            
return new MapPoint( geoPLon, geoPLat );
        }
        
        const georssPolygon : String 
= String(x.GEORSS::polygon);
        
if( georssPolygon )
        {
            
return parseGeoRSSPolygon( georssPolygon);
        }        
                
        const whereList : XMLList 
= x.GEORSS::where;
        
if( whereList && whereList.length() > 0 )
        {
            const pos : String 
= whereList[0].GML::Point[0].GML::pos[0];
            const arr : Array 
= pos.split(" ");
            const gmlLat : Number 
= Number(arr[0]);
            const gmlLon : Number 
= Number(arr[1]);
            
return new MapPoint( gmlLon, gmlLat );
        }                        
        
return null;
    }
    
    private static 
function parseGeoRSSWhere( x : XML ) : Geometry
    {
        
return null;
    }
    
    private static 
function parseGeoRSSPoint( text : String ) : Geometry
    {
        const tokens : Array 
= StringUtil.trim(text).split(" ");
        const lat : Number 
= Number(tokens[0]);
        const lon : Number 
= Number(tokens[1]);
        
return new MapPoint( lon, lat);         
    }
    
    private static 
function parseGeoRSSPolygon( text : String ) : Geometry
    {
        const path : Array 
= [];
        const tokens : Array 
= StringUtil.trim(text).split(" ");
        
forvar i:int=0, j:int=1; j < tokens.length; i+=2, j+=2 )
        {
            
var lat : Number = Number(tokens[i]);
            
var lon : Number = Number(tokens[j]);
            path.push( 
new MapPoint( lon, lat) );   
        }
        
return new Polygon([path]);
    }

}
}

class SingletonEnforcer
{    
}
复制代码

    XML解析中的中文编码是经常会碰到的一个问题,但万变不离其宗——UTF-8,请参考这两篇文章:

    说到GeoRSS,GeoRSS是一种地理位置搜索与聚合的方法,在地图上显示当前消息的地理位置,标注出来,点击查询时可以访问该消息的具体内容,如在地图上以GeoRSS方式标识会议地点,点击之后可以继续挖掘信息,一月前我就是通过GeoRSS找到了Oracle开发者大会具体位置和时间。

 本文转自Flyingis博客园博客,原文链接:http://www.cnblogs.com/flyingis/archive/2008/12/21/1359162.html,如需转载请自行联系原作者

相关文章
|
1天前
|
XML 数据格式
程序技术好文:格式化xml
程序技术好文:格式化xml
|
27天前
|
XML 网络协议 Java
XML Web 服务技术解析:WSDL 与 SOAP 原理、应用案例一览
XML Web服务是基于WSDL、SOAP、RDF和RSS等标准的网络应用程序组件技术。WSDL描述服务接口和消息格式,SOAP用于结构化信息交换,RDF描述网络资源,RSS则用于发布网站更新。Web服务特点是自包含、自描述,基于开放协议,可重用且能连接现有软件。WSDL文档包含`types`、`message`、`portType`和`binding`元素,定义服务操作和协议。SOAP协议规定消息格式,通过HTTP等传输。
489 1
|
1月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
94 0
|
1月前
|
XML 安全 API
Python读写XML文件:深入解析与技术实现
Python读写XML文件:深入解析与技术实现
91 0
|
1月前
|
XML 数据处理 数据格式
什么是 SAP UI5 XML Templating 技术
什么是 SAP UI5 XML Templating 技术
|
1月前
|
弹性计算 前端开发 容器
CSS之Flex布局的详细解析
Flex布局 目标:熟练使用 Flex 完成结构化布局 01-标准流 标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。
83 0
|
8月前
|
Web App开发 前端开发 安全
flex布局轻而易举实现页面布局;超详细解析轻松掌握
flex布局轻而易举实现页面布局;超详细解析轻松掌握
53 0
|
8月前
|
人工智能 数据可视化 API
ArcGIS API for Python
ArcGIS API for Python
43 0
|
8月前
|
XML JavaScript 前端开发
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
SAP UI5 本地开发如何实现 XML 和 JavaScript 代码的自动完成和嵌入式 API 文档自动显示试读版
|
8月前
|
XML Web App开发 前端开发
SAP UI5 进阶 - XML 视图里定义的 UI 控件,运行时实例化的技术细节剖析试读版
SAP UI5 进阶 - XML 视图里定义的 UI 控件,运行时实例化的技术细节剖析试读版