E4X教程[2] - 访问 XML 子节点
访问 XML 子节点
JavaScript 对象通常使用 . 或 [] 来设置性质。
var a = {}; a.foo = 1; a["bar"] = 2;
在 E4X 中,点(.)和中括号([])操作符用来访问 E4X 元素的子节点。
var element1 = <foo> <bar/> </foo>; var element2 = <baz/>; element1.bar.appendChild(element2); element1["bar"].appendChild(<quux/>);
往 element1 中的 bar 节点添加子节点,生成如下 XML 文档:
<foo> <bar> <baz/> <quux/> </bar> </foo>
但是要注意,给一个不存在的子元素赋值会创建这个元素。
var element1 = <foo/> element1.bar = 1;
生成
<foo> <bar>1</bar> </foo>
如果子节点已经存在,点(.)操作符允许你更改它的值。
var elem = <foo> <bar>1</bar> </foo> elem.bar = 2;
会将原来的值 1 改成 2。
你可以用 delete 命令删除一个子节点。
var elem = <foo> <bar/> <baz/> </foo> delete elem.bar;
只剩下
<foo> <baz/> </foo>
点(.)操作符还能用于替换特定的子节点。
var elem1 = <foo> <bar/> </foo>; var elem2 = <red> <blue/> </red>; elem1.bar = elem2;
用 elem2 的全部内容替换 <bar/> 元素。
<foo> <red> <blue/> </red> <foo>
XML 列表
许多时候,一个元素会有两个或多个相同类型的子节点。在这种情况下,访问 foo.bar 将返回一个XML 列表对象,包含所有类型为“bar”的子节点。注意:在使用 . 操作符时,判断它是返回单个元素还是一个 XML 列表,这是你的责任。在返回这些性质时,E4X 的行为并没有区别。
XML 列表的行为就像是一个数组。
var element = <foo> <bar baz="1">red</bar> <bar baz="2">blue</bar> </foo>; var list = element.bar; list.length(); // returns 2 list[0]; // the first bar element list[1]; // the second bar element
需要注意,这个列表时可修改的,在它上面做的修改都会反映到原始的 XML 文档中。
list[1] = "green";
XML 文档被修改为:
<foo> <bar baz="1">red</bar> <bar baz="2">green</bar> </foo>
特殊类型的节点
XML 对象有一些方法可以访问 XML 列表中的通用类型节点。
var a = <foo> Some text <bar>not text</bar> More text </foo>; var list = a.text(); list.length(); // returns 2 list[0]; // returns " Some text " list[1]; // returns " More text "
你同样可以访问注释节点:
XML.ignoreComments = false; var a = <foo> Some <!-- abc --> text </foo>; var comments = a.comments(); alert(comments[0]); // Returns <!-- abc -->
星号(*)选择器将返回 XML 列表的所有子节点。
var a = <foo> <bar/> <baz/> </foo>; var list = a.*; list.length(); // returns 2
元素属性
很多 XML 元素都有赋有特定值的属性。例如:
<pets> <dog color="brown">Fido</dog> <cat color="grey">Fluffy</cat> </pets>
E4X 运行你用 .@ 操作符来反问这些特定元素的属性。最基本的情况如下例所示:
var element = <foo bar="1"/> element.@bar = 2;
它将生成:
<foo bar="2"/>
为方便其他朋友提问和指正,转载是请保持文章完整性,并以超链接形式注明原始作者“redraiment ”和主站点 地址,谢谢。
联系方式
我的邮箱,欢迎来信(redraiment@gmail.com
)
我的CSDN博客(梦婷轩
):http://blog.csdn.net/redraiment
我的百度空间(梦婷轩
):http://hi.baidu.com/redraiment
相关文章
- 代码操作常用快捷键
- LED手电筒 礼品灯 地摊灯的方案
- 使用git管理工具sourcetree拉取代码
- 微信小程序校园个人主页显示前端---flex布局
- ES6语法模板字符串详解与使用
- Luminar 4 for mac(全功能图像处理软件) v4.3.4中文版
- ChatGPT火爆下,区块链正趋于冷静
- mac office 中文版 苹果电脑设备可安装激活
- ABBYY FineReader PDF 15 for Mac(ocr文字识别软件)v15.2.9中文激活版
- ChatGPT对于中小学生学习的十三种使用方式,帮助学生成长和教师教学
- OneCode开源低代码引擎白皮书
- Red Giant Trapcode Suite for Mac(红巨星粒子插件)
- iThoughtsX for mac(最好用的思维导图工具) 9.3中文版
- 【Prometheus+Grafana系列】基于docker-compose搭建
- Adobe Illustrator圆滑曲线如何制作【附各版本安装包】
- Screegle - Clean Screen Sharing for Mac(专业屏幕共享软件)v2.2.3直装版
- Camtasia2023笔记本屏幕录制录像捕获软件使用教程
- Portraiture4.0磨皮插件有哪些新功能?
- 一、R与RStudio 基础知识
- 办公软件office安装包最新版本安装教程