如何使用xml javascript解析childrenNodes

时间:2017-12-27 15:19:47

标签: javascript xml

我正在尝试使用此示例xml响应并解析此xml的子节点和子节点。 Prin和Role对象将用于创建相关记录,其中主记录的PrinID将设置为相关子记录的角色。

我遇到的挑战是循环遍历子对象,然后立即解析子记录。我编写的代码单独执行,不允许我为每个角色创建相关记录。

如果我采用相同的逻辑并将getElementsByTagName更改为Role,它只是解析这些记录而与其父对象没有任何关系。

我如何编写第二个循环或迭代器,以便在循环遍历其子记录的角色时获取主记录的PrinID

<Prin>
    <PrinName>John</PrinName>
    <PrinID>12345</PrinID>
    <Role>
        <Code>1111</Code>
    </Role>
    <Role>
        <Code>2222</Code>
    </Role>
</Prin>

<Prin>
    <PrinName>James</PrinName>
    <PrinID>45678</PrinID>
    <Role>
        <Code>3333</Code>
    </Role>
    <Role>
        <Code>4444</Code>
    </Role>
</Prin>

var prinID="";
var prinList=prinDoc.getDocumentElement().getElementsByTagName("Prin");

for (var i=0;i<prinList.getLength();i++){
    var childList=prinList.item(i).getChildNodes();
    for (var j=0;j<childList.getLength();j++){
        var childNode=childList.item(j);
        if (childNode.getNodeName()=="PrinName"){
            prinID=childNode=getTextContent();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这样的东西?

var prinID="";
var prinList=prinDoc.getDocumentElement().getElementsByTagName("Prin");

for (var i=0;i<prinList.getLength();i++){
    var prinObject = printList.getItem(i);

    var prinID = prinObject.getElementsByTagName("PrinID").getTextContent();
    var roleList=prinObject.getElementsByTagName("Role");
    for (var j=0;j<roleList.getLength();j++){
        var roleObject = roleList.item(j);
        ...
    }
}