1.XML概述:XML技术是一种基于标签的层次结构技术.
1.1.XML document(XML文件):指的是XML文件,完全不同于XMLDocument类.
1.2.XML node(XML节点) 是XML的基本组成部分,节点可以是元素,文本节点或属性.
1.3.XML element(XML元素):一般被理解为标签,但是XML元素包含的都是成对标签.
1.4.Root node(根节点):最外层的XML元素
1.5.Attribute(属性):XML元素的一部分,位于标签内.
1.6.XML declaration(XML声明):一个特殊的标签,说明该文件是XML文件.
2XML数据的优点:
2.1.用户可以手工编辑或程序编写XML,可以很容易表示负责的数据类型.
2.2.大部分服务端语言都支持XML的读取操作.
2.3.XML是一种标准,可以很容易的在不同应用程序或者平台上传递和存储.
3.创建XML对象
3.1.使用XML标签创建XML对象
格式:var XML变量:XML=<根元素>
<元素1/>
<元素2/>
.......
<元素n/>
</根元素>;
Code
//{}操作符可以用来进行动态数据绑定
var ss:String="a";
var example:XML=<abc>
<a>{ss}</a>
<b>b</b>
<c>c</c>
</abc>;
Alert.show(example);
3.2使用字符串创建XML对象
格式: var XML变量:XML=new XML(字符串);
var ss:String="a";
var str:String="<abc><a>"+ss+"</a><b>b</b><c>c</c></abc>";
var example:XML=new XML(str);
Alert.show(example);
4.XML对象添加元素:为XML对象添加新元素有四种方法:1将元素名作为属性添加元素,2使用"[]"操作符添加元素,使用insertChildBefore方法添加元素,使用insertChildArter方法添加元素.
4.1将元素名作为属性添加元素
格式:XML对象名.新元素名=内容;
4.2使用"[]"操作符添加元素
格式:XML对象名[新增元素名]=内容;
4.3.insertChildBefore方法:在某元素前插入新元素.
格式:XML对象名.insertChildBefore(XML元素,新元素);
4.4.insertChildArter方法:在某元素后
插入新元素.
格式:XML对象名.insertChildArter(XML元素,新元素);
Code
var example:XML=<example/>;
//使用元素名作为属性添加
example.newElemnet=<newElemnet/>;
var id:int=10;
//使用"[]"操作符
example["user"+id]="";
example.two="";
//使用XML自带的方法
example=example.insertChildBefore(example.two,<one/>);
example=example.insertChildAfter(example.two,<three/>);
5.XML对象中添加元素内容:XML元素内容指两个封闭标签间的内容.
5.1将元素名作为属性添加元素内容
格式:XML对象.元素名=值;
Code
var example:XML=<example/>;
//使用元素名作为属性添加
example.firstname="Jason";
example.age=25;
example.boolean=true;
example.abc=["a", undefined, "b", "c", null, 7, false];
/*显示:
<example>
<firstname>Jason</firstname>
<age>25</age>
<boolean>true</boolean>
<abc>a,,b,c,,7,false</abc>
</example>
* */
5.2.使用XML类中的方法添加元素内容
XML对象.appendChild(内容);
XML对象.prependChild(内容);
XML对象名.insertChildBefore(XML元素,新元素);
XML对象名.insertChildArter(XML元素,新元素);
Code
var example:XML=<example/>;
//使用XML类方法
example.appendChild(<two>2</two>);//增加<two>元素值为2
example.prependChild(<one>"number 1"</one>);//增加<one>元素,值为"number 1".
example.insertChildAfter(example.one[0], 1.5);//在第一个<one>后添加值为1.5
example.insertChildBefore(example.two[0], <part>1.75</part>);//在第一个<two>后添加<part>新元素,值为:1.75
/*显示
*<example>
<one>"number 1"</one>
1.5
<part>1.75</part>
<two>2</two>
</example> */
6.XML元素中添加属性:包含在元素内的名称和值.
6.1.使用"@"操作符添加属性
格式:XML对象名.元素名.@属性=值;
6.2.使用"[]"操作符添加属性
格式:XML对象名.元素名.@[属性名]=值;
Code
//使用"@"操作符
var example:XML=<example><someElement/></example>;
example.someElement.@number=12.1;
example.someElement.@string="example";
example.someElement.@boolean=true;
example.someElement.@array=["a", null, 7, undefined, "c"];
//使用"[]"操作符
example.someElement.@["color" + 11]="red";
Alert.show(example);
/*显示:
<example>
<someElement number="12.1" string="example" boolean="true" array="a,,7,,c" color11="red"/>
</example>
* */
7.从XML中读取元素
从XML中读取元素可以使用elements方法,elements方法返回该XML根节点下全部直接子节点元素.
格式:XML对象.elements();
Code
public function ReadXml()
{
var menu:XML=<menu>
<menuitem label="File">
<menuitem label="New"/>
</menuitem>
<menuitem label="Help">
<menuitem label="About"/>
</menuitem>
This is a text node
</menu>;
var result:String="";
for each (var element:XML in menu.elements())
{
result=result + element.@label + "\n";
}
Alert.show(result);
/*返回结果
File
Help
*/
//在这边因为File和Help是根节点的直接子节点,所以只返回这两个节点,
//而New和About则是这两个节点的子节点,所以不返回
//如果要返回所有节点需要向下递归
walk(menu);
/*返回结果
*
File
New
Help
About
*/
}
public function walk(node:XML):void
{
var result:String="";
for each (var element:XML in node.elements())
{
Alert.show(element.@label);
walk(element);
}
}