2017-12-27 366 views
0

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

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

如果我采用相同的逻辑并将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(); 
     } 
    } 
} 

回答

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); 
     ... 
    } 
} 
+0

感谢您的回复。使用你的逻辑,我可以返回正确数量的“Prin”对象。但是,我得到的prinObject变量未定义。 getItem(i)返回undefined,Item(i)返回null。有什么建议么? – Ernie