AS3操作xml
来源:互联网 发布:单片机可以做什么 编辑:程序博客网 时间:2024/06/13 10:05
定义一个XML对象:
internal var newXML:XML =
<tutorial>
<item id='1'>
<level>2</level>
<title> First touch of Flash 9</title>
</item>
<item id='2'>
<level>3</level>
<title> Binding Classes</title>
</item>
<item id='3'>
<level>4</level>
<title>Document Class</title>
</item>
</tutorial>;
访问XML对象的节点,@开头说明是属性
trace(newXML.item[1].level, newXML.item[2].@id, newXML.item[2].title);
输出:3 3 Document Class
//显示level为4的节点的title值
trace (newXML.item.(level == 4).title);
//output:Document Class
//显示level>2的节点的title值,本处结果大于1,所以是一个XML Array。
trace (newXML.item.(level > 2).title);
/*output:
<title>Binding Classes</title>
<title>Document Class</title>
*/
//使用属性用@开头即可。
trace (newXML.item.(level > 2).@id);
//output:23
//这儿要注意,实际上是2,3。一个Array.
//也可以用属性来做判断
trace (newXML.item.(@id > 1).title);
添加或者修改属性,直接写即可。
//把id == 1的节点level值改为2
newXML.item.(@id==1).level = 2;
//把id==1的节点添加一个属性 page
newXML.item.(@id==1).page = 100;
trace (newXML.item.(@id==1));
按某条件插入节点
var newNode1:XML = <item id='2.5'><level>0</level><title>None</title></item>
var newNode2:XML = <item id='1.5'><level>0</level><title>None</title></item>
//把newNode1插入到id==2的节点后面
newXML = newXML.insertChildAfter(newXML.item.(@id==2), newNode1);
//把newNode1插入到id==2的节点前面
newXML = newXML.insertChildBefore(newXML.item.(@id==2), newNode2);
trace (newXML);
XML.ignoreWhitespace = false;
XML.ignoreComments = false;
XML类的ignoreWhitespace和ignoreComments属性都是true,像上面那样设置,只对设置之后的新产生的XML对象有效,也就是说在上面2个设置之前new出来的XML对象这2个属性仍是true。而且ignoreComments为true的时候,XML对象连注释都不会读取,也就是说,如果是个xml文件,此XML对象从文件中读取的内容不包含注释。
访问XML的注释,首先ignoreComments要是false
trace(newestXML.comments().length());
trace(newestXML.comments()[1].toXMLString());
这里的comments()是指根标签内,在其他标签对之外的注释,要像访问内部元素,要这样写:
trace(newestXML.item[0].comments()[0].toXMLString());
更深层的注释,就依次类推。
XML的克隆
var newestXML:XML = newXML.copy();
descendants函数:返回一个XMLList对象,包括所有的子节点。设ignoreComments = false;和ignoreProcessingInstructions = false(是否处理XML操作指令)后,连comments和process instructions也会包含在这个XMLList对象中。
参考文档里是这样说明:
返回包含给定
name
参数的 XML 对象的所有后代(子级、孙级、曾孙级等)。
name
参数是可选项。
name
参数可以为 QName 对象、String 数据类型或随后转换为 String 数据类型的任何其它数据类型。
若要返回所有后代,请使用“*”参数。如果未传递任何参数,则传递字符串“*”,并返回此 XML 对象的所有后代。
示例:
XML.ignoreComments = false;
var xml:XML =
<body>
<!-- comment -->
text1
<a>
<b>text2</b>
</a>
</body>;
trace(xml.descendants("*").length()); // 5
trace(xml.descendants("*")[0]); // // <!-- comment -->
trace(xml.descendants("*")[1].toXMLString()); // text1
trace(xml.descendants("a").toXMLString()); // <a><b>text2</b></a>
trace(xml.descendants("b").toXMLString()); // <b>text2</b>
XML节点删除,删除的方法目前常用的有两种:
1、复制所有节点除了想要删除的。
2、delete点想要删除的节点。
使用
prependChild()
方法或
appendChild()
方法可在 XML 对象属性列表的开头或结尾添加属性
var x1:XML = <p>Line 1</p> var x2:XML = <p>Line 2</p> var x:XML = <body></body>x = x.appendChild(x1);x = x.appendChild(x2);x = x.prependChild(<p>Line 0</p>); // x == <body><p>Line 0</p><p>Line 1</p><p>Line 2</p></body>
使用
insertChildBefore()
方法或
insertChildAfter()
方法在指定属性之前或之后添加属性
var xx:XML =
<body>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</body>;
var newNode:XML=<p>Paragraph 1.5</p>;
xx = xx.insertChildAfter(xx.p[0],newNode);
xx = xx.insertChildBefore(xx.p[2], <p>Paragraph 1.75</p>);
trace(xx);
还可以使用大括号运算符(
{
和
}
)在构造 XML 对象时按引用(从其它变量)传递数据
var ids:Array = [121, 122, 123];
var names:Array = [["Murphy","Pat"], ["Thibaut","Jean"], ["Smith","Vijay"]]
var x:XML = new XML("<employeeList></employeeList>");
for (var i:int = 0; i < 3; i++){
var newnode:XML = new XML();
newnode = <employee id={ids[i]}> <last>{names[i][0]}</last> <first>{names[i][1]}</first> </employee>;
x = x.appendChild(newnode)
}
internal var newXML:XML =
<tutorial>
<item id='1'>
<level>2</level>
<title> First touch of Flash 9</title>
</item>
<item id='2'>
<level>3</level>
<title> Binding Classes</title>
</item>
<item id='3'>
<level>4</level>
<title>Document Class</title>
</item>
</tutorial>;
访问XML对象的节点,@开头说明是属性
trace(newXML.item[1].level, newXML.item[2].@id, newXML.item[2].title);
输出:3 3 Document Class
//显示level为4的节点的title值
trace (newXML.item.(level == 4).title);
//output:Document Class
//显示level>2的节点的title值,本处结果大于1,所以是一个XML Array。
trace (newXML.item.(level > 2).title);
/*output:
<title>Binding Classes</title>
<title>Document Class</title>
*/
//使用属性用@开头即可。
trace (newXML.item.(level > 2).@id);
//output:23
//这儿要注意,实际上是2,3。一个Array.
//也可以用属性来做判断
trace (newXML.item.(@id > 1).title);
添加或者修改属性,直接写即可。
//把id == 1的节点level值改为2
newXML.item.(@id==1).level = 2;
//把id==1的节点添加一个属性 page
newXML.item.(@id==1).page = 100;
trace (newXML.item.(@id==1));
按某条件插入节点
var newNode1:XML = <item id='2.5'><level>0</level><title>None</title></item>
var newNode2:XML = <item id='1.5'><level>0</level><title>None</title></item>
//把newNode1插入到id==2的节点后面
newXML = newXML.insertChildAfter(newXML.item.(@id==2), newNode1);
//把newNode1插入到id==2的节点前面
newXML = newXML.insertChildBefore(newXML.item.(@id==2), newNode2);
trace (newXML);
XML.ignoreWhitespace = false;
XML.ignoreComments = false;
XML类的ignoreWhitespace和ignoreComments属性都是true,像上面那样设置,只对设置之后的新产生的XML对象有效,也就是说在上面2个设置之前new出来的XML对象这2个属性仍是true。而且ignoreComments为true的时候,XML对象连注释都不会读取,也就是说,如果是个xml文件,此XML对象从文件中读取的内容不包含注释。
访问XML的注释,首先ignoreComments要是false
trace(newestXML.comments().length());
trace(newestXML.comments()[1].toXMLString());
这里的comments()是指根标签内,在其他标签对之外的注释,要像访问内部元素,要这样写:
trace(newestXML.item[0].comments()[0].toXMLString());
更深层的注释,就依次类推。
XML的克隆
var newestXML:XML = newXML.copy();
descendants函数:返回一个XMLList对象,包括所有的子节点。设ignoreComments = false;和ignoreProcessingInstructions = false(是否处理XML操作指令)后,连comments和process instructions也会包含在这个XMLList对象中。
参考文档里是这样说明:
返回包含给定
name
参数的 XML 对象的所有后代(子级、孙级、曾孙级等)。
name
参数是可选项。
name
参数可以为 QName 对象、String 数据类型或随后转换为 String 数据类型的任何其它数据类型。
若要返回所有后代,请使用“*”参数。如果未传递任何参数,则传递字符串“*”,并返回此 XML 对象的所有后代。
示例:
XML.ignoreComments = false;
var xml:XML =
<body>
<!-- comment -->
text1
<a>
<b>text2</b>
</a>
</body>;
trace(xml.descendants("*").length()); // 5
trace(xml.descendants("*")[0]); // // <!-- comment -->
trace(xml.descendants("*")[1].toXMLString()); // text1
trace(xml.descendants("a").toXMLString()); // <a><b>text2</b></a>
trace(xml.descendants("b").toXMLString()); // <b>text2</b>
XML节点删除,删除的方法目前常用的有两种:
1、复制所有节点除了想要删除的。
2、delete点想要删除的节点。
使用
prependChild()
方法或
appendChild()
方法可在 XML 对象属性列表的开头或结尾添加属性
var x1:XML = <p>Line 1</p> var x2:XML = <p>Line 2</p> var x:XML = <body></body>x = x.appendChild(x1);x = x.appendChild(x2);x = x.prependChild(<p>Line 0</p>); // x == <body><p>Line 0</p><p>Line 1</p><p>Line 2</p></body>
使用
insertChildBefore()
方法或
insertChildAfter()
方法在指定属性之前或之后添加属性
var xx:XML =
<body>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</body>;
var newNode:XML=<p>Paragraph 1.5</p>;
xx = xx.insertChildAfter(xx.p[0],newNode);
xx = xx.insertChildBefore(xx.p[2], <p>Paragraph 1.75</p>);
trace(xx);
还可以使用大括号运算符(
{
和
}
)在构造 XML 对象时按引用(从其它变量)传递数据
var ids:Array = [121, 122, 123];
var names:Array = [["Murphy","Pat"], ["Thibaut","Jean"], ["Smith","Vijay"]]
var x:XML = new XML("<employeeList></employeeList>");
for (var i:int = 0; i < 3; i++){
var newnode:XML = new XML();
newnode = <employee id={ids[i]}> <last>{names[i][0]}</last> <first>{names[i][1]}</first> </employee>;
x = x.appendChild(newnode)
}
- as3操作xml
- AS3 操作XML
- [AS3]操作XML
- AS3 操作XML详解
- AS3操作xml
- as3 xml 操作
- as3操作xml之二
- AS3操作XML添加节点
- AS3 操作XML,增加、删除、修改、查找
- AS3操作XML,增加、删除、修改
- Flex As3 解析XML文件(上:基本操作)
- Flex As3 解析XML文件(上:基本操作)
- as3之XML对象
- AS3 XML 转JSON
- flash as3读取xml
- AS3处理XML
- as3读取xml
- As3.0 xml + Loader
- log4net使用
- 黑马程序员——day08_javabean和EL表达式
- 交叉验证--Cross validation
- gcc初学者命令
- Android 环境在ubuntu下的搭建
- AS3操作xml
- android:ListView使用总结
- HD OJ 1002Problem 大数相加
- 杭电OJ题 1557 权利指数 解题报告
- RC 资源文件
- 点击头部字母,滚动条跳转到相应的位置 jquery
- 【2013.1.24】我有一个梦想:有一天世界上全部电器都可以用一个充电器来充电——Adapter
- WIFI Calibration
- NesC学习经验总结:第三篇 如何调试NesC程序