`
#天琪#
  • 浏览: 159378 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

AS3:转换XML到Object—-XMLToObject

    博客分类:
  • AS3
阅读更多
转自:http://www.roading.net/blog/?p=204

这是WebService的解析响应数据类,负责转换xml到object,解析的结果可以按照访问object/array的方式访问.
//读取rss的例子 http://www.roading.net/as3/readfeed.swf
import net.roading.*;
import net.roading.data.*;
import net.roading.skin.*;
import net.roading.component.*;

SkinManager.load("FlexSkin.swf",loaded);

function loaded()
{
var titlel = new Label(0,5,550,20,"blog title… wait loaded");
addChild(titlel);
//
var ll = new Label(0,378,50,20,"feed url:");
addChild(ll);
//
var futi = new TextInput(50,378,400,20);
var lbtn = new Button(510,378,30,20,"load");
addChild(futi);
addChild(lbtn);
//
lbtn.addEventListener("click",loadClick);
//
function loadClick(e)
{
var fl:FileLoader = new FileLoader();
fl.loadXml(futi.text);
fl.onLoad = function(xml)
{
//trace(xml);
var o = XMLToObject.to(xml);
//
//trace(o.rss.channel.item.length);
titlel.text = o.rss.channel.title+" — "+o.rss.channel.description;
//
ta.text = o.rss.channel.item[0].description;
//
list.dataProvider = o.rss.channel.item;
}
}
//
var list = new ListBox();
list.move(2,30);
list.size(200,345);
list.labelField = "title";
addChild(list);
//
list.addEventListener("change",listChange);
//
function listChange(e)
{
var o = list.selectedData;
//for(var i in o)
//trace(i,"===",o[i]);
ta.text = o.description;
}
//
var ta = new TextArea(205,30,340,345);
ta.wordWrap = true;
ta.html = true;
addChild(ta);
}

//———————————————————————–
//类实现
package net.roading.data
{
public class XMLToObject
{

public function XMLToObject()
{
}

static public function to(dp:XML,ignoreNamespace:Boolean=false):Object
{
if(dp)
{
var _obj={};
dp.ignoreWhitespace = true;
pNode(dp,_obj,ignoreNamespace);
return _obj;
}
return null;
}

static private function pNode(node,obj:Object,ignoreNamespace:Boolean):void
{
//
if(ignoreNamespace)node.setNamespace("");
//
var nodeName = node.name().toString();
var o:Object = {};
var j;
if(node.attributes().length()>0)
{
for(j in node.attributes())
{
o[node.attributes()[j].name().toString()]=node.attributes()[j];
}
if(node.children().length()<=1&&o["value"]==undefined)
{
o["value"]=node.toString();
}
}
else
{
if(node.children().length()<=1&&!node.hasComplexContent())
{
o=node.toString();
}
}
//——————————
if(obj[nodeName] == undefined)
obj[nodeName] = o;
else
{
if(obj[nodeName] is Array)
obj[nodeName].push(o)
else
obj[nodeName] = [obj[nodeName],o];
}
try{
toObj(node,obj[nodeName],ignoreNamespace);
}catch(e){};
}

static private function toObj(dp:XML,obj:Object,ignoreNamespace:Boolean):void
{
var i,j,nodeName,nl;
nl = dp.children().length();
for(i=0;i {
var node = dp.children()[i];
if(obj is Array)
{
pNode(node,obj[obj.length-1],ignoreNamespace);
}
else
pNode(node,obj,ignoreNamespace);
//
}
}

}
}


分享到:
评论

相关推荐

    as3比较详尽的工具类

    xmlToArray.as ---------------------- xml转换Array util: ArrayUtil.as ---------------------- 数组辅助功能 setFrameout.as ---------------------- 延迟(帧)函数 clearFrameout.as ------------------...

    将xml文件读取转换为Object

    为了将XML数据转换为Python对象,我们可以创建相应的类结构,然后将解析的数据填充到这些对象中。例如,我们可以创建`Game`、`Level`和`Enemy`类: ```python class Enemy: def __init__(self, name): self.name =...

    PHP实现XML与数据格式进行转换类

    - **数组转XML**:SimpleXML提供了一个方便的方法`asXML()`,将SimpleXMLElement对象转换为XML字符串。DOM则可以通过`DOMDocument::saveXML()`或`DOMDocument::save()`保存到字符串或文件。 4. **类设计与实现** ...

    NSDictionary,JSON和XML互相转换

    3. XML到NSDictionary转换: 使用`SWXMLHash`库,XML可以轻松转换为`NSDictionary`: ```swift import SWXMLHash let xml = "&lt;root&gt;&lt;element key='value'&gt;&lt;/element&gt;&lt;/root&gt;" let parser = SWXMLHash.parse...

    yolo-将LabelImg标注的VOC格式数据转换为Yolo格式-数据集.zip

    4. **VOC到Yolo格式转换** 转换过程涉及读取XML文件,解析目标信息,并将其写入Yolo格式的txt文件。主要步骤如下: - 读取XML文件:解析每个XML文件,提取图像路径、宽度、高度以及边界框和类别信息。 - 计算坐标...

    VB解析Json转换为Xml

    3. 将反序列化的Json对象转换为Xml,这里可以使用LINQ to XML来实现: ```vb Dim xDoc As XDocument = New XDocument( New XElement("Root", From kvp In jsonObject Select New XElement(kvp.Key, kvp.Value....

    PHP 将 XML文件或内容直接转成数组

    1. **定义函数** `xmlToArray` - 这个函数接受一个XML字符串或文件路径作为输入。 - 函数首先检查输入是否为空,若为空则返回空数组。 - 如果输入包含XML声明,则使用`simplexml_load_string`将其解析为SimpleXML...

    xls(xml2003格式)转json

    标题提到的"xls(xml2003格式)转json"就是这样的一个场景,它涉及到将XML格式的Excel 2003文件转换成JavaScript Object Notation (JSON)格式。在Web开发中,JSON因其轻量级、易于阅读和编写的特点,被广泛用于数据...

    第四章 PHP创建与解析XML

    array_to_xml($jsonObj, $sxml); // 自定义函数将数组转为XML echo $sxml-&gt;asXML(); ``` **4. 使用XPath查询** XPath是一种在XML文档中查找信息的语言。在DOM中,我们可以使用DOMXPath类来执行XPath查询。例如: ...

    SimpleXML

    foreach ($xmlObject as $element) { echo $element . "\n"; } ``` ### 4. 访问XML属性 XML元素的属性可以通过点号`.`或方括号`[]`来访问: ```php echo $xmlObject-&gt;attribute; // 对于,访问attribute属性 ...

    domtoimage使用HTML5canvas从DOM节点生成图像

    3. **domtoimage库**:这是一个JavaScript库,它使用Canvas API将DOM树渲染为图片。它可以捕获CSS样式、字体和其他复杂布局,生成高质量的图像。这对于实现网页截图、保存用户界面状态或生成自定义的社交媒体分享...

    读取指定文档转换成XML节点属性(不是属性节点)vb

    在VB(Visual Basic)编程环境中,处理XML数据...总之,在VB中读取指定文档并将其转换为XML节点属性涉及到XML解析、DOM操作以及错误处理等多个方面。理解这些概念并熟练运用将有助于你在实际项目中有效地处理XML数据。

    jQuery完全实例.rar

    在这个函数的内部,是通过临时创建一个元素,并将这个元素的 innerHTML 属性设置为给定的标记字符串,来实现标记到 DOM 元素转换的。所以,这个函数既有灵活性,也有局限性。 jQuery 代码: $("&lt;div&gt;&lt;p&gt;Hello&lt;/p&gt;...

    vba excel to xml

    标题“vba excel to xml”指的正是使用VBA来实现Excel到XML的转换过程。这个过程通常涉及到以下几个关键步骤: 1. **读取Excel数据**:首先,我们需要使用VBA来访问并读取Excel工作表中的数据。这可以通过使用`...

    java转换xml、list、map和json(20210924214538)[借鉴].pdf

    public static String xmlToJson(String xmlStr) { JSONObject jsonObject = XMLSerializer.read(xmlStr); return jsonObject.toString(); } ``` 对于Map与JSON的转换,可以使用`JSONObject`的构造函数或`from...

    C#语法速查卡

    - `is` 和 `as` 运算符用于类型检查和转换。 #### 逻辑运算符 C#支持以下逻辑运算符: - 逻辑与:`&` 和 `&&` - 逻辑或:`|` 和 `||` - 异或:`^` #### 赋值运算符 除了基本的`=`赋值运算符外,C#还支持复合赋值...

    jquery电子文档chm

    In most cases you won't need that object to manipulate directly, but it is available if you need to abort the request manually. Note: If you specify the dataType option described below, make sure ...

    Flex与JSON及XML的互操作

    2. **解析XML**:接收到XML响应后,Flex应用使用`XML`类解析XML数据,将其转换为AS3对象。 3. **数据绑定**:将解析后的数据绑定到Flex应用的UI组件上,如数据网格或列表,以展示股票价格信息。 #### 结论 Flex与...

    java xml和map互转

    public static Map, Object&gt; xmlToMap(String xmlStr) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(xmlStr); Element rootElement = document....

    JAVA JAXB 解析XML嵌套子节点为字符串

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...

Global site tag (gtag.js) - Google Analytics