20.8.读取文本节点

问题
我想解析出文本节点及其值
解决办法
使用E4X语法,或者用text( )方法返回元素的文本节点的XMLList对象,再用toString( )方法把文本节点转换为字符串,也可通过int( ) 或Number( ) 将其转换为其他类型。
讨论
第20.4节讨论了如何创建文本节点,这一节将讨论如何读取文本节点的内容。比如下面的XML包:
+展开
-XML
<book>
<title>ActionScript 3.0 Cookbook</title>
</book>

根节点为<book>,其包含子元素节点<title>,<title> 元素又包含文本节点,其值为ActionScript3.0 Cookbook。
可通过点操作符,根据节点名称找到元素,使用toString( )方法得到文本节点的值:
+展开
-ActionScript
var book:XML = <book>
<title>ActionScript 3.0 Cookbook</title>
</book>;
// 用E4X 语法访问title元素
var title:String = book.title.toString( );
// 显示: ActionScript 3.0 Cookbook
trace( title );

另外可通过Boolean( ),int( )等函数转换文本节点数据类型:
+展开
-ActionScript
var example:XML = <example>
<bool>true</bool>
<integer>12</integer>
<number>.9</number>
</example>;
// Convert a text node of "true" to boolean true
var bool:Boolean = Boolean( example.bool );
// Convert a text node of "12" to an integer
var integer:int = int( example.integer );
// Convert a text node of ".9" to a number
var number:Number = example.number;
/* 显示:
true
12
.9
*/

trace( bool );
trace( integer );
trace( number );

上面的代码有个小小的问题,即Boolean( ) 转换可能会不成功,如果<bool> 元素的值如果是TRue则可能得不到正确的值,最好是进行一下大小写转换,如:
+展开
-ActionScript
var bool:Boolean = example.bool.toLowerCase( ) == "true";

再看一下面的例子,这个XML的根节点即包含元素节点也包含文本节点,如果想显示<fruit>的文本节点内容该怎么写呢?
+展开
-ActionScript
var fruit:XML = <fruit>
<name>Apple</name>
An apple a day...
</fruit>;
var value:String = fruit.toString( );
/* 显示:
<fruit>
<name>Apple</name>
An apple a day...
</fruit>
*/

trace( value );

这种情况下,用text( ) 方法可正确返回文本节点内容了:
+展开
-ActionScript
var fruit:XML = <fruit>
<name>Apple</name>
An apple a day...
</fruit>;
for each ( var textNode:XML in fruit.text( ) ) {
// 显示: An apple a day...
trace( textNode );
}

加支付宝好友偷能量挖...


评论(1)网络
阅读(93)喜欢(0)flash/flex/fcs/AIR