XML - E4X


XML-E4X(ECMAScript for XML)是一种使用ECMAScript语言处理XML文档的方式。它首次出现在ECMAScript 4.0规范中,但是该规范最终没有被接受。然而,许多浏览器和JavaScript引擎仍支持XML-E4X。

使用XML-E4X,可以像处理常规对象一样处理XML文档。具体来说,以下是XML-E4X的主要特点:

1.元素和属性可以像JavaScript对象一样访问。

2.支持XPath风格的表达式。

3.可以使用类似于CSS选择器的选择器。

下面是一个XML-E4X的示例:

var xml =
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>;

在上面的代码中,我们使用一个XML字面量创建了一个XML文档。现在我们可以使用JavaScript的点运算符或方括号访问该文档的标签、属性和文本内容:

console.log(xml.book[0].title); // <title lang="en">Everyday Italian</title>
console.log(xml.book[0].title.@lang); // en
console.log(xml.book[0].price.text()); // 30.00

上述代码将输出上面代码中的每个相应属性和子目录的值。其中,@字符表示我们正在访问元素的属性。

此外,XML-E4X还支持“循环”元素,或者像其他用户所说的过滤元素,可以使用类似CSS选择器的语法或XPath表达式:

// 使用CSS选择器
console.log(xml..book.(@category == "CHILDREN").title); // <title lang="en">Harry Potter</title>

// 使用XPath表达式
console.log(xml..book.(@category == "CHILDREN")[0].title); // <title lang="en">Harry Potter</title>

在上述示例中,我们使用了两种方法,一种是使用CSS选择器,另一种是使用XPath表达式。前者使用@运算符来访问属性,后者则是类似于JavaScript数组的表示形式。

我们可以看到,XML-E4X是一个非常强大的工具,可以使我们以一种准确的方式处理XML文档,而无需编写冗长的代码。虽然它不再在ECMAScript规范中得到支持,但它仍然是一个有用的库,可以在许多浏览器和JavaScript引擎中使用。