mozilla
您的搜索结果

    Accessing XML children

    访问 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"/>

    文档标签和贡献者

    此页面的贡献者有: ziyunfei, redraiment
    最后编辑者: ziyunfei,