JavaScript E4X : How do I properly iterate over an attribute XMLList?

标签 javascript iteration attributes undefined e4x

我在 JavaScript 中通过 E4x 检索属性值时遇到问题。

假设如下所示的 XML 节点列表作为 XMLObject:

<node att1="value1" att2="value2" att3="value3" att4="value4">
    <nodeChild><!CDATA[/* ... */]></nodeChild>
    /* more node childs */
</node>

我使用 attributes() 方法正确访问了节点(在循环中)及其属性节点:

var attributes = node[n].attributes() ;
    for(var n = 0 ; n < attributes.length() ; n++) {
        var name = attributes[n].name() ;
        var value = attributes[n].toString() ;
        //.. handle the values
    }

现在,名称和值未充分返回 value(n) 返回 name(n+1) 的值,即 att1 的值将是 value2;如果我设置 var value = attribute[ (n+1) ].toString() ,则值会正确返回,但第一个值将返回未定义。

可能我只是对这个很感兴趣。那么,有人能指出我所缺少的内容吗?

TIA,

FK

最佳答案

除了这些问题之外,你的代码对我有用,我确信这些问题在你的实际 XML 中不存在,因为你能够解析和迭代它们:

  1. CDATA 声明无效。更改为<![CDATA[..]]>
  2. /* more node childs */使 XML 无效
  3. 已替换 n0 ,或者完全没有它也可以

这是我用来迭代节点属性的确切代码。

var node = <node att1="value1" att2="value2" att3="value3" att4="value4">
    <nodeChild><![CDATA[/* ... */]]></nodeChild>
</node>;

var attributes = node[0].attributes() ;
for(var n = 0 ; n < attributes.length() ; n++) {
    var name = attributes[n].name() ;
    var value = attributes[n].toString() ;
    console.log("%s = %s", name, value);    
}

// log output
// att1 = value1
// att2 = value2
// att3 = value3
// att4 = value4

请注意,E4X 提供了一种更简洁的方式来编写上述内容(结合 JavaScript 1.6 中引入的 for each in ):

for each(var attribute in node.@*) {
    var name = attribute.name();
    var value = attribute.toString();
}

由于您引用的是 XML 对象,因此无需像 node[0] 那样通过索引引用根元素。 。您可以简单地写node .

关于JavaScript E4X : How do I properly iterate over an attribute XMLList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3101852/

相关文章:

javascript - 不包含 block 引用的节点的查询选择器

iteration - Puppet - 在迭代哈希时,如果 hiera 中不存在,则在 list 中设置默认值

函数中的 C++ 数组

object - 如何在 Raku 中动态访问对象中的属性

Javascript 选择 onchange ='this.form.submit()'

javascript - Alexa 内置插槽类型 : No value being passed

php - Google Maps API 使图标成为链接

ruby - 如何以递增方式遍历 2d 数组并使用 ruby​​ 增加增量?

jquery - 将 "px"值插入 jquery 的 attr 方法时,图像属性被设置为零

CSS,如何将 img 的大小调整回其宽度属性