- 浏览: 549001 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
【转载】CSS圆角按钮(一) -
saiarmuluo:
不错,支持。
java log4j日志 写入数据库 -
springdata_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Freemarker 使用 -
zlbdexiaohao:
棒棒的
flex ToolTip汇总 -
hw_128:
demo的代码的,能不能发一下,谢谢 qq257515270 ...
java log4j日志 写入数据库
xml格式:
<mx:XMLList id="treeData"> <node label="1" id="1" index="1,"> <node label="1" id="101" index="2,"> <node label="1-1" id="10101" index="3,"/> <node label="1-2" id="10102" index="4,"/> <node label="1-3" id="10103" index="5,"/> </node> <node label="1" id="101" index="2,"> <node label="1-1" id="10101" index="3,"> <node label="1-2" id="10102" index="4,"/> <node label="1-3" id="10103" index="5,"/> </node> <node label="1-2" id="10102" index="4,"/> <node label="1-3" id="10103" index="5,"/> </node> </node> </mx:XMLList>
一次获取所有节点的index属性的集合:
AS代码:
var dropSourceXml:XMLList=treeData;
Alert.show("index="+dropSourceXml..node.attribute("index")); //其中node 表示xml中定义的节点的名字 index 为属性名
至于每个index后面有个“,”方便截取转换成array 比较。
<mx:XMLList id="userData"> <root> <users> <user id="1" > <firstName> firstName:admin1 </firstName> <lastName> lastName:admin1 </lastName> </user> <user id="2" > <firstName> firstName:admin2 </firstName> <lastName> lastName:admin2 </lastName> </user> </users> </root> </mx:XMLList>
1.根据索引返回指定的值
userData.users.user[1].firstName
2.根据属性的值返回制定节点的信息
userData.users.user(@id==2).firstName
3.根据邻居节点返回指定节点的值
firstName节点和lastName节点是相邻的节点
userData.users.user(@lastName=='lastName:admin2').firstName
4.访问节点属性使用@符号访问节点属性
userData.users.user(@id==2).@firstName
5.赋值
userData.users.user[1].@id=3;
userData.users.user[1].id=3;
userData.users.user(@id==2).firstName='asdfasdf';
userData.users.user(@lastName=='lastName:admin2').firstName="asdfasdfasdf"
6.判断是否存在指定的节点
userData.users.hasOwnProperty("user")
7.循环遍历节点
for each(var node:XML in userData.users.user)
{
var name=node.firstName;
}
var list:XMLList=userData.users.user;
for each(var node:XML in list)
{
var name=node.firstName;
}
8.获取后代所有节点
userData..user.firstName;返回的结果是
<firstName>firstName:admin1</firstName>
<firstName>firstName:admin2</firstName>
9.通配符使用
userData.user.user.*;返回结果
<firstName>firstName:admin1</firstName>
<lastName>lastName:admin1</lastName>
<firstName>firstName:admin2</firstName>
<lastName>lastName:admin2</lastName>
匹配所有属性userData.users.user@.*;返回结果是user节点中所有的属性值
10.添加节点
prependChild | (newChild);//在xml开始部分插入一个节点 |
appendChild(newChild);//在xml结算位置插入一个节点
11.删除节点
delete userData.users.user[1];
12.xml中使用动态变量
var userName:String = "demo";
var myXML:XML = <person><userName>{userName}</userName></person>;
13.新增一个节点元素
//例子一:
var example:XML = <person/>;
example.father = <father/>; //内容属性和元素名称不一定要相同,也可以: example.abc = <father/>,但会以元素名称为准,即会建立一个<father/>元素
trace(example);
/* 输出: <person> <father/> </person> */
//例子二:
var example:XML = <person/>;
example.father = ""; //建立一个<father/>元素
trace(example.toString());
/* 输出: <person> <father/> </person> */
//例子三:
var example:XML = <person/>;
var id:int = 10;
example["user" + id] = "";
trace(example);
/*
输出:<person> <user10/> </person>
注意: 有些情况必须使用第三种情况.例如,元素节点名称内含连字符("-")是完全合法的,但在ActionScript里会得到编译器错误: example.some-element = ""; //产生编译器错误 正确的写法是: example["some-element"] = ""; */
14.新增属性
var example:XML = <person/>;
example.element = "";
example.element.@name = "demo";
example.element.@["bad-variable-name"] = "yes";
example.element.@other = ["riahome.cn", undefined, true, 44, null];
var id:int = 44;
example.element.@["user" + id] = "love";
trace(example);
/*
输出:
<person>
<element name="demo" bad-variable-name="yes" other="riahome.cn,,true,44," user44="love"/>
</person>
*/
15.向XML插入文字元素和节点元素
//在指定元素前和后插入,在最前端和尾端插入
var example:XML = <person/>;
example.two = "";
example.insertChildBefore(example.two, <one/>); //在two节点前插入one节点
example.insertChildBefore(example.two, "在two节点前插入文字");
example.insertChildAfter(example.two, <three/>); //在two节点后插入three节点
example.prependChild(<start/>); //在最顶端插入start节点
example.appendChild(<end/>); //在尾端插入end节点
example.start = "start内容"; //向节点增加内容
trace(example);
/*
输出:
<person>
<start>start内容</start>
<one/>
在two节点前插入文字
<two/>
<three/>
<end/>
</person>
*/
16.把XML实例的内容属性转换为任何可以转换成字符串的内容
//先把等号右边转为可以转换的字符串
var example:XML = <person/>;
example.one = "one";
example.two = new URLLoader();
example.three = new Sprite();
example.four = new Boolean; //Boolean对象的值初始化为false
example.five = new Number();
example.six = new String();
example.seven = {a:"Youthoy", b:true, c:undefined};
example.eight = ["three", undefined, true, 44, null];
/*
输出:
<person>
<one>one</one>
<two>[object URLLoader]</two>
<three>[object Sprite]</three>
<four>false</four>
<five>0</five>
<six/>
<seven>[object Object]</seven>
<eight>three,,true,44,</eight>
</person>
*/
17.递归迭代XML
var example:XML = <menu>
<menuitem label="File">
<menuitem label="New"/>
<menuitem label="Save"/>
</menuitem>
<menuitem label="Help">
<menuitem label="About"/>
</menuitem>
</menu>;
walk(example);
function walk(node:XML):void {
for each(var element:XML in node.elements()) {
trace(element.@label);
walk(element);
}
18.读取文字节点及其值
var example:XML = <menu>
My name is Youthoy.
<myName>Youthoy</myName>
</menu>;
example.text(); //输出: My name is Youthoy.
example.myName.toXMLString(); //输出: <myName>Youthoy</myName>
//以下三行都输出: Youthoy
example.myName.toString();
example.myName.text();
example.myName;
19.递归元素属性时读取属性名与其值
var example:XML = <person name="Youthoy" age="21"/>;
for each(var i:XML in example.attributes()) {
trace(i.name() + "=" + i);
}
/*
输出:
name=Youthoy
age=21
*/
另类方法:
var example:XML = <person name="Youthoy" age="21"/>;
trace(example.@*[1]); //输出: 21
例子1(对于节点元素):
var example:XML = <a>
<z>I am z.</z>
<b>
<c></c>
<z>I am z.</z>
</b>
</a>;
trace(example..z.text()); //输出: I am z.I am z.
例子2(对于属性):
var example:XML = <person>
<a>
<item name="Youthoy" age="21"/>
</a>
<item name="Jimpa" age="21"/>
</person>
trace(example..@name); //输出: YouthoyJimpa
var example:XML = <foodgroup>
<fruits>
<fruit color="red">Apple</fruit>
<fruit color="orange">Orange</fruit>
<fruit color="green">Pear</fruit>
<fruit color="red">Watermelon</fruit>
</fruits>
<vegetables>
<vegetable color="red">Tomato</vegetable>
<vegetable color="brown">Potato</vegetable>
<vegetable color="green">Broccoli</vegetable>
</vegetables>
</foodgroup>;
trace(example..*.(hasOwnProperty("@color") && @color == "red"));
/*
hasOwnProperty所做的检测是确保元素具有color属性,然后,有的话,就测试color属性之值是否为red.只有当条件的计算结果为true时,该元素才会加入EX4运算式所返回的XMLList.
输出
<fruit color="red">Apple</fruit>
<fruit color="red">Watermelon</fruit>
<vegetable color="red">Tomato</vegetable>
var myXML:XML =
<order>
<item id='1'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<item id='2'>
<menuName>fries</menuName>
<price>1.45</price>
</item>
</order>
通常,应用程序都会从外部源(如 Web 服务或 RSS 供给)加载 XML 数据。不过为清楚
起见,本章中的示例是将 XML 数据作为文本来分配的。
如以下代码所示,E4X 包含了一些直观运算符(如点 (.))和属性标识符 (@) 运算符,用于
访问 XML 中的属性 (property) 和属性 (attribute):
trace(myXML.item[0].menuName); // 输出:burger
trace(myXML.item.(@id==2).menuName); // 输出:fries
trace(myXML.item.(menuName=="burger").price); // 输出:3.95
使用 appendChild() 方法可为 XML 分配一个新的子节点,如下面的代码片断所示:
var newItem:XML =
<item id="3">
<menuName>medium cola</menuName>
<price>1.25</price>
</item>
myXML.appendChild(newItem);
使用 @ 和 . 运算符不仅可以读取数据,还可以分配数据,如下所示:
myXML.item[0].menuName="regular burger";
myXML.item[1].menuName="small fries";
myXML.item[2].menuName="medium cola";
myXML.item.(menuName=="regular burger").@quantity = "2";
myXML.item.(menuName=="small fries").@quantity = "2";
myXML.item.(menuName=="medium cola").@quantity = "2";
使用 for 循环可以循环访问 XML 的节点,如下所示:
var total:Number = 0;
for each (var property:XML in myXML.item)
{
var q:int = Number(property.@quantity);
var p:Number = Number(property.price);
var itemTotal:Number = q * p;
total += itemTotal;
trace(q + " " + property.menuName + " $" + itemTotal.toFixed(2))
}
trace("Total: $", total.toFixed(2));
访问属性
使用 @ 符号(属性标识符运算符)可以访问 XML 或 XMLList 对象的属性,如下面的代码
所示:
var employee:XML =
<employee id="6401" code="233">
<lastName>Wu</lastName>
<firstName>Erin</firstName>
</employee>;
trace(employee.@id); // 6401
可以一起使用 * 通配符和 @ 符号来访问 XML 或 XMLList 对象的所有属性,如下面的代码
所示:
var employee:XML =
<employee id="6401" code="233">
<lastName>Wu</lastName>
<firstName>Erin</firstName>
</employee>;
trace(employee.@*.toXMLString());
// 6401
// 233
按属性或元素值过滤
可以使用括号运算符 — ( 和) — 过滤具有特定元素名称或属性值的元素。请考虑下面的
XML 对象:
var x:XML =
<employeeList>
<employee id="347">
<lastName>Zmed</lastName>
<firstName>Sue</firstName>
<position>Data analyst</position>
</employee>
<employee id="348">
<lastName>McGee</lastName>
<firstName>Chuck</firstName>
<position>Jr. data analyst</position>
</employee>
</employeeList>
x.employee.(lastName == "McGee") — 这是第二个 employee 节点。
■ x.employee.(lastName == "McGee").firstName — 这是第二个 employee 节点的
firstName 属性。
■ x.employee.(lastName == "McGee").@id — 这是第二个 employee 节点的 id 属性的值。
■ x.employee.(@id == 347) — 第一个 employee 节点。
■ x.employee.(@id == 347).lastName — 这是第一个 employee 节点的 lastName 属性。
■ x.employee.(@id > 300) — 这是具有两个 employee 属性的 XMLList。
■ x.employee.(position.toString().search("analyst") > -1) — 这是具有两个
position 属性的 XMLList。
如果试图按照可能不存在的属性或元素过滤,Adobe Flash Player 将引发异常。例如,以下
代码的最后一行产生一个错误,因为第二个 p 元素中没有 id 属性:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(@id == '123'));
同样,以下代码的最后一行也会产生一个错误,因为第二个 p 元素没有 b 属性:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
为了避免这些错误,可以使用 attribute() 和 elements() 方法来识别具有匹配属性或元素
的属性,如下面的代码所示:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(attribute('id') == '123'));
trace(doc.p.(elements('b') == 'Bob'));
还可以使用 hasOwnProperty() 方法,如下面的代码所示:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(hasOwnProperty('@id') && @id == '123'));
trace(doc.p.(hasOwnProperty('b') && b == 'Bob'));
使用 for..in 和 for each..in 语句
ActionScript 3.0 包含用于循环访问 XMLList 对象的 for..in 语句和 for each..in 语
句。例如,我们来看 XML 对象 myXML 和 XMLList 对象 myXML.item。XMLList 对象
myXML.item 由 XML 对象的两个 item 节点组成。
var myXML:XML =
<order>
<item id='1' quantity='2'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<item id='2' quantity='2'>
<menuName>fries</menuName>
<price>1.45</price>
</item>
</order>;
for..in 语句用于循环访问 XMLList 中的一组属性名称:
var total:Number = 0;
for (var pname:String in myXML.item)
{
total += myXML.item.@quantity[pname] * myXML.item.price[pname];
}
for each..in 语句用于循环访问 XMLList 中的属性:
var total2:Number = 0;
for each (var prop:XML in myXML.item)
{
total2 += prop.@quantity * prop.price;
}
//
读取外部 XML 文档
可以使用 URLLoader 类从 URL 加载 XML 数据。要在应用程序中使用以下代码,请将示
例中的 XML_URL 值替换为有效的 URL:
var myXML:XML = new XML();
var XML_URL:String = "http://www.example.com/Sample3.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener("complete", xmlLoaded);
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
trace("Data loaded.");
}
对于特殊的xml定义,api有详细的说明
发表评论
-
Flex4 模块 [转载]
2012-11-05 09:30 0使用flex4模块(1):传递数据到模块 在主程序与模块 ... -
Flex4 List改变了dataProvider,怎么锁定选中Item【转载】
2012-11-05 09:29 1096sfList.dataProvider = sfData; i ... -
解决flex嵌入字体导致文件过大的问题[转载]
2012-11-05 09:25 0众所周知,Flex嵌入字体 ... -
flex DataGrid 行列颜色设置
2012-05-06 20:00 9143群里一哥们问了个问题,就写了个这个demo DataGrid ... -
flex4 Spark DataGrid,title的字体居中
2012-03-20 21:23 6273【原创】flex4 Spark DataGrid,title的 ... -
flex4 Application backgroundImage
2012-03-10 15:13 2889群里一哥们问我 f4 设置 Application 的 bac ... -
flex 无法将“<mx:>”解析为组件执行.解决办法:
2012-03-09 16:34 8294flex项目导入早期版本 无法将“<mx:******& ... -
flex component 去掉点击加亮边框
2012-03-09 16:35 1090群里有人问我怎么去掉TextInput的文本框加亮。写下来 ... -
flex ProgressBar skin 修改
2012-03-09 16:36 2949f3的形式修改border: 其中 barSkin 是外边框 ... -
flex Draggable Flex Components
2012-03-08 20:38 997Creating Resizable and Draggabl ... -
flex 3d云标签
2012-03-08 20:37 1592来自:http://downloads.wordpress.o ... -
AS html 形式超链接设置
2012-03-08 20:36 1647lbl.htmlText = " <b& ... -
flex IViewCursor 的应用
2012-03-08 20:35 1094IViewCursor 的应用 demo 效果图:可以上下 ... -
f4 spark 占位控件
2012-03-08 20:33 979halo的占位控件。<mx:Spacer width=& ... -
halo的grid DataGridColumn itemRenderer 混用 spark 组件
2012-03-03 14:20 1411halo的grid DataGridColumn itemRe ... -
flex DeferredInstanceFromFunction 使用
2012-03-02 21:54 1585flex DeferredInstanceFromFuncti ... -
flex ContextMenuItem 根据状态隐藏选项
2012-02-27 18:28 1386因群里一个群员的要求,写了这个demo,代码粗糙,根据一个控件 ... -
动态设置itemRenderer
2012-02-18 19:34 0<mx:TileList id="tl&quo ... -
【转】解决RemoteClass alias信息丢失
2012-02-18 19:15 794问题发生场景:flex程序中存在多个module都调用一个标记 ... -
flex tree icon
2012-02-14 19:53 33241.tree 改变每一项的 icon图标 <?xml ...
相关推荐
综上所述,Flex中的XML操作涉及文件系统访问、网络通信、数据解析等多个方面,熟练掌握这些技能对于构建Flex应用至关重要。在实际项目中,根据具体需求灵活运用这些知识点,可以实现高效的数据管理和交换。
### Flex与JSON及XML的互操作:深度解析 #### 核心知识点概览 1. **Flex框架**:一种开源框架,允许开发者使用MXML语言和ActionScript 3构建Flash应用程序,尤其适用于创建富互联网应用(RIA)。 2. **JSON...
### Flex与XML操作详解 #### 一、E4X与ActionScript 3.0的集成 E4X(ECMAScript for XML)是ECMAScript标准的一个扩展,它被引入到ActionScript 3.0中,极大地简化了XML数据处理的过程。在Flash 5时,ActionScript...
在Flex界面中添加HTTPService组件,配置其URL以指向服务器上的XML数据源,然后设置result事件监听器,以便在接收到数据时执行解析操作。 例如,以下是一个简单的HTTPService使用示例: ```xml <![CDATA[ import...
E4X是AS3中内置的XML支持,它使XML操作像处理JavaScript对象一样简单。E4X允许直接通过XML对象来访问和修改XML数据。以下是如何使用E4X加载XML文件: ```actionscript var xmlLoader:URLLoader = new URLLoader(); ...
Flex中的XML支持E4X,这是一种集成在AS3中的XML处理语法,使XML操作更加直观。E4X允许我们像处理JavaScript对象一样处理XML,例如: ```actionscript var items:Array = xml.root.item.*; for each (var item:XML ...
总结,Flex解析XML文件主要通过XML和XMLList类,它们提供了丰富的API来操作XML数据。理解这些概念和方法,将有助于你在Flex应用中有效地处理和展示XML数据。无论是简单的数据展示还是复杂的交互逻辑,Flex都能通过...
【XML操作】 1. **加载XML数据**:在Flex中,可以使用`<mx:XML>`组件来加载XML数据源。例如,通过指定URL,Flex可以从服务器获取XML文档,如`<mx:XML source="http://example.com/data.xml" id="xmlData"/>`。 2. ...
【Flex XML MP3播放器详解】 Flex是一种基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。这个“Flex XML MP3播放器”项目是利用Flex技术开发的一个多媒体播放器,专用于播放MP3音频文件。在本文...
标题:Flex XML生成Tree源码 描述:此代码示例展示了如何在Flex应用程序中使用XML数据来动态生成一个树形结构(Tree)。Flex是Adobe Systems开发的一款开源框架,用于构建跨平台的桌面和移动设备应用。这段代码通过...
在Flex开发中,XML文件常被用作数据存储和传输的格式,因为它结构清晰、易于理解和操作。本篇文章将深入探讨如何使用Flex解析XML文件,并通过HTTPService来读取XML内容,以及如何根据需求过滤字符串并获取所需值。 ...
在Flex中,我们通常使用XML类来解析和操作XML文档。以下是一些关键步骤和知识点: 1. **创建XML对象**:在Flex中,你可以通过XML()构造函数创建一个XML对象,然后加载XML字符串或文件。例如: ```actionscript ...
总结,Flex中对XML的操作包括读取、写入和保存,可以结合E4X和FileReference类实现。同时,通过序列化和反序列化技术,可以将图形数据与XML文件进行交互,方便数据的持久化和复用。在实际项目中,这些技能对于构建富...
### Flex操作XML实现增删改查 在Flex中操作XML数据是进行动态内容处理的关键技能之一。本篇文章将深入探讨如何使用Flex中的XML类来实现对XML数据的增、删、改、...希望本文能帮助读者更好地掌握Flex中的XML操作技巧。
// 进行XML操作 } ``` 2. **解析XML**:一旦XML加载完成,你可以使用XML类的方法来访问和操作XML节点。例如,`children()`、`@attributeName`和`parent()`等方法用于获取子元素、属性值和父元素。 3. **绑定XML到...
Flex XML 生成是一个在ActionScript 3.0中处理XML文档的重要技术,它主要用于构建基于Flex的应用程序。Flex是Adobe开发的一个开源框架,用于构建富互联网应用程序(RIA),它允许开发者使用MXML和ActionScript来设计...
1. 创建XML数据:在.NET后端,你可以使用XMLDocument或者XDocument类来创建和操作XML。例如,生成一个表示树结构的XML文件,其中包含节点(节点可以有子节点)。 ```csharp var doc = new XDocument( new XElement...
在探讨“Flex读取XML乱码的解决方法”这一主题时,我们首先需要理解几个关键概念:Flex框架、XML文件以及编码问题。Flex是一种用于构建跨平台桌面应用程序和移动应用程序的强大框架,它由Adobe Systems开发并开源。...
在Flex开发环境中,`flex-config.xml`文件是一个至关重要的配置文件,它允许开发者自定义Adobe Flex编译器的行为。这个文件通常位于项目的根目录下,或者在全局的Flex SDK安装路径中,对于命令行编译尤其重要。通过...