XML From Action Script[AS中的XML学习笔记]

贡和裕
2023-12-01

XML From Action Script

XML 是 eXtensible Markup Language (可扩展标记语言)的缩写。


E4X

ECMAScript for XML 规范定义了一组用于处理 XML 数据的类和功能。这些类和功能统称为 E4X。 ActionScript 3.0 包含 
以下 E4X 类:XML、 XMLList、 QName 和 Namespace。

  1. E4X 包含了一些直观运算符(如点 (.) 和属性标识符 (@) 运算符),用于访问 XML 中的属性 (property)和属性 (attribute)。
  2. 使用 appendChild() 方法可为 XML 分配一个新的子节点。

XML 对象可能表示 XML 元素、属性、注释、处理指令或文本元素。

  1. 注释与处理指令
  1. <!--This is a comment. -->
  2. <?PROC_INSTR sample ?>
  1. 可以使用 comments() 和 processingInstructions() 方法创建新的 XML 对象。
  2. 静态属性: 
    • ignoreComments 和 ignoreProcessingInstructions 属性确定分析 XML 对象时是否忽略注释或处理指令。
    • ignoreWhitespace 属性确定在只由空白字符分隔的元素标签和内嵌表达式中是否忽略空白字符。
    • prettyIndent 和 prettyPrinting 属性用于设置由 XML 类的 toString() 和 toXMLString() 方法返回的文本的格式。
  3. 方法: 

    处理 XML 对象的分层结构: 
    • appendChild() 
    • child() 
    • childIndex() 
    • children() 
    • descendants() 
    • elements() 
    • insertChildAfter() 
    • insertChildBefore() 
    • parent() 
    • prependChild() 
    用于处理 XML 对象属性 (attribute): 
    • attribute() 
    • attributes() 
    用于处理 XML 对象属性 (property): 
    • hasOwnProperty() 
    • propertyIsEnumerable() 
    • replace() 
    • setChildren() 
    用于处理限定名和命名空间: 
    • addNamespace() 
    • inScopeNamespaces() 
    • localName() 
    • name() 
    • namespace() 
    • namespaceDeclarations() 
    • removeNamespace() 
    • setLocalName() 
    • setName() 
    • setNamespace() 
    用于处理和确定某些类型的 XML 内容: 
    • comments() 
    • hasComplexContent() 
    • hasSimpleContent() 
    • nodeKind() 
    • processingInstructions() 
    • text() 
    用于转换为字符串和设置 XML 对象的格式: 
    • defaultSettings() 
    • setSettings() 
    • settings() 
    • normalize() 
    • toString() 
    • toXMLString() 
    其它几个方法: 
    • contains() 
    • copy() 
    • valueOf() 
    • length()


XMLList 对象

XMLList 实例表示 XML 对象的任意集合。 方法:

以下方法用于处理 XMLList 对象的分层结构: 
• child() 
• children() 
• descendants() 
• elements() 
• parent() 
以下方法用于处理 XMLList 对象属性 (attribute): 
• attribute() 
• attributes() 
以下方法用于处理 XMLList 属性 (property): 
• hasOwnProperty() 
• propertyIsEnumerable() 
以下方法用于处理和确定某些类型的 XML 内容: 
• comments() 
• hasComplexContent() 
• hasSimpleContent() 
• processingInstructions() 
• text() 
以下方法用于转换为字符串和设置 XMLList 对象的格式: 
• normalize() 
• toString() 
• toXMLString() 
还有其它几个方法: 
• contains() 
• copy() 
• length() 
• valueOf()

对于只包含一个 XML 元素的 XMLList 对象,可以使用 XML 类的所有属性和方法。

初始化 XML 变量

  1. 直接赋值
  2. 使用 new 构造函数从包含 XML 数据的字符串创建 XML 对象的实例
  3. 将数据按引用 (从其它变量)传递到 XML 对象
  4. 使用 URLLoader 类从 URL 加载 XML 数据
  5. 使用 XMLSocket 类从套接字连接读取 XML 数据

遍历 XML 结构

  1. 使用点 (.) 运算符和后代存取器 (..) 运算符可以访问 XML 对象的子属性
  2. parent() 方法返回 XML 对象的父项
  3. 可以使用子级列表的序数索引值访问特定的子对象
  4. 可以使用 child() 方法导航到名称基于变量或表达式的子项
  5. 使用 @ 符号 (属性标识符运算符)可以访问 XML 或 XMLList 对象的属性
  6. 使用 attribute() 或 attributes() 方法访问 XML 或 XMLList 对象的特定属性或所有属性 
    attribute("*") == attributes() 
    可以使用 attribute() 和 elements() 方法来识别具有匹配属性或元素的属性,还可以使用 hasOwnProperty() 方法

使用 for..in 和 for each..in 语句

for..in 语句用于遍历 XMLList 中的一组属性名称 
for each..in 语句用于遍历 XMLList 中的属性

XML 命名空间

  1. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  2. soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  3. </soap:Envelope>;

XML 类包含用于处理命名空间的以下方法:addNamespace()、inScopeNamespaces()、 localName()、 name()、 namespace()、namespaceDeclarations()、 removeNamespace()、 setLocalName()、setName() 和 setNamespace()。

可设置default xml namespace

XML 类型转换

XML 和 XMLList 类都包含一个 toString() 方法和一个 toXMLString()方法。 toXMLString() 方法返回包含该 XML 对象的所有标签、属性、命名空间声明和内容的字符串。 
对于包含简单内容的 XML 对象 (只包含一个文本元素的对象), toString() 方法只返回该元素的文本内容。 
trace() 方法默认使用toString()

读取外部 XML 文档

可以使用 URLLoader 类从 URL 加载 XML。 
还可以使用 XMLSocket 类设置与服务器的异步 XML 套接字连接。

 类似资料: