2017-12-27 367 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