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

简介:
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,如需转载请自行联系原作者

相关文章
|
16天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
22天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
29天前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
169 0
|
1月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
|
2月前
|
IDE Java API
使用Java Web技术构建RESTful API的实践指南
使用Java Web技术构建RESTful API的实践指南
|
2月前
|
Java 程序员 API
Java并发基础:concurrent Flow API全面解析
java.util.concurrent.Flow定义了响应式编程的核心接口,促进了Java在异步数据处理和背压机制方面的标准化,这使得第三方库如Reactor和RxJava能够基于这些接口提供丰富的实现和功能,同时简化了响应式编程在Java中的使用,Flow API增强了Java在并发编程领域的灵活性,使得处理异步数据流变得更加自然和高效。
109 0
Java并发基础:concurrent Flow API全面解析
|
2天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
13 0
|
5天前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
14 1
|
7天前
|
机器学习/深度学习 API TensorFlow
TensorFlow的高级API:tf.keras深度解析
【4月更文挑战第17天】本文深入解析了TensorFlow的高级API `tf.keras`,包括顺序模型和函数式API的模型构建,以及模型编译、训练、评估和预测的步骤。`tf.keras`结合了Keras的易用性和TensorFlow的性能,支持回调函数、模型保存与加载等高级特性,助力提升深度学习开发效率。
|
15天前
|
JavaScript API UED
Vue3.0新特性解析与实战:Composition API、Teleport与Suspense
【4月更文挑战第6天】Vue3.0引入了颠覆性的Composition API,通过函数式方法提升代码可读性和复用性,例如`setup()`、`ref`等,便于逻辑模块化。实战中,自定义的`useUser`函数可在多个组件中共享用户信息逻辑。另外,Teleport允许组件渲染到DOM特定位置,解决模态框等场景的上下文问题。再者,Suspense提供异步组件加载的延迟渲染,使用fallback内容改善用户体验。这些新特性显著优化了开发和性能,适应现代Web需求。
19 0