如何访问xml2js生成的对象中的集合

时间:2014-05-30 06:41:38

标签: javascript xml

给出以下简单的XML:

<root>
<node1>
    <node2>
        <node3 name="blah" />
        <node3 name="blah" />
        <node3 name="blah" />
    </node2>
    <node2>
        <node3 name="blah" />
        <node3 name="blah" />
        <node3 name="blah" />
    </node2>
    <node2>
        <node3 name="blah" />
        <node3 name="blah" />
        <node3 name="blah" />
    </node2>
</node1>

以下javascript:

xml2js.parseString(data, function(err, result) {
            if (err) {
                console.log(err);
            } else {

                console.log(result);

                console.log(result.root);
                console.log(result.root.node1);
                // console.log(result.root.node1.node2);

                // console.log(result.root.node1.node2[1]);

//                console.log(result.root.node1[2]);

  //              console.log(result.root.node1[2]);


            }

如何获取名为node2(和node3)的子节点集合?我认为上述任何评论都没有被认为是常识性工作,并且令人惊讶的是,它似乎并不是一个单独的xml2js示例,它实际上涵盖了访问它的生成输出。

JSON.stringify(结果)的输出

{
"root": {
    "node1": [
        {
            "node2": [
                {
                    "node3": [
                        {
                            "$": {
                                "name": "blah"
                            }
                        },
                        {
                            "$": {
                                "name": "blah"
                            }
                        },
                        {
                            "$": {
                                "name": "blah"
                            }
                        }
                    ]
                },
                {
                    "node3": [
                        {
                            "$": {
                                "name": "blah"
                            }
                        },
                        {
                            "$": {
                                "name": "blah"
                            }
                        },
                        {
                            "$": {
                                "name": "blah"
                            }
                        }
                    ]
                },
                {
                    "node3": [
                        {
                            "$": {
                                "name": "blah"
                            }
                        },
                        {
                            "$": {
                                "name": "blah"
                            }
                        },
                        {
                            "$": {
                                "name": "blah"
                            }
                        }
                    ]
                }
            ]
        }
    ]
}

}

1 个答案:

答案 0 :(得分:0)

  

如何获得名为node2的子节点集合?

result.root.node1是一个数组,要获取其中的第一个<node1>,您必须访问它的索引:

result.root.node1[0].node2
  那个问题

和node3?

没有一个<node3>个集合,但您可以在上面同样访问相应的第i个.node3的{​​{1}}:

.node2

您可以在result.root.node1[0].node2[i].node3 集合上使用循环。