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

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

复制代码
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,如需转载请自行联系原作者

相关文章
|
13天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
43 2
|
17天前
|
XML JavaScript 数据格式
XML 相关技术
XML 相关技术
|
2月前
|
存储 缓存 搜索推荐
Lazada淘宝详情API的价值与应用解析
在电商行业,数据是驱动业务增长的核心。Lazada作为东南亚知名电商平台,其商品详情API对电商行业影响深远。本文探讨了Lazada商品详情API的重要性,包括提供全面准确的商品信息、增强平台竞争力、促进销售转化、支持用户搜索和发现需求、数据驱动决策、竞品分析、用户行为研究及提升购物体验。文章还介绍了如何通过Lazada提供的API接口、编写代码及使用第三方工具实现实时数据获取。
57 3
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
113 3
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
14天前
|
API 数据安全/隐私保护
抖音视频,图集无水印直链解析免费API接口教程
该接口用于解析抖音视频和图集的无水印直链地址。请求地址为 `https://cn.apihz.cn/api/fun/douyin.php`,支持POST或GET请求。请求参数包括用户ID、用户KEY和视频或图集地址。返回参数包括状态码、信息提示、作者昵称、标题、视频地址、封面、图集和类型。示例请求和返回数据详见文档。
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
27天前
|
JSON 前端开发 JavaScript
API接口商品详情接口数据解析
商品详情接口通常用于提供特定商品的详细信息,这些信息比商品列表接口中的信息更加详细和全面。以下是一个示例的JSON数据格式,用于表示一个商品详情API接口的响应。这个示例假定API返回一个包含商品详细信息的对象。

推荐镜像

更多