2017-12-27 28 views
0

このサンプルXML応答を受け取り、このxmlの子ノードと子ノードの両方を解析しようとしています。 PrinおよびRoleオブジェクトは、主レコードのPrinIDが関連する子レコードのロールに設定される関連レコードを作成するために使用されます。xml javascriptを使用してchildrenNodesを解析する方法

私が抱えている課題は、子オブジェクトをループして、すぐに子レコードを解析することです。私が書いたコードは両方とも個別に行いますが、私は各ロールの関連レコードを作成できません。

同じロジックを使用してgetElementsByTagNameをRoleに変更すると、親オブジェクトとの関係なくこれらのレコードが解析されます。

2番目のループまたはイテレータを書き込んで、子レコードの役割をループしながらメインレコードの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)は未定義を返し、Item(i)はnullを返します。助言がありますか? – Ernie

関連する問題