2017-12-27 9 views
0

Ich versuche, diese Beispiel-XML-Antwort und Parsing sowohl die untergeordneten und untergeordneten Knoten dieses XML. Die Prin- und Role-Objekte werden verwendet, um verwandte Datensätze zu erstellen, bei denen die PrinID des Hauptsatzes auf die Rolle des zugehörigen untergeordneten Datensatzes gesetzt wird.Wie childrenNodes mit XML-Javascript zu analysieren

Die Herausforderung, die ich habe, ist durch das Kind-Objekt durchlaufen und dann sofort die Kinder-Datensätze zu analysieren. Der Code, den ich geschrieben habe, hat beides, was es mir nicht erlaubt, für jede Rolle einen zugehörigen Datensatz zu erstellen.

Wenn ich die gleiche Logik nehme und den getElementsByTagName in Role ändere, parst er diese Datensätze einfach ohne irgendeine Beziehung zu seinem Elternobjekt.

Wie könnte ich die zweite Schleife oder Iterator schreiben, so dass es die PrinID des Hauptsatzes beim Durchlaufen der Rollen seiner Kinder Datensätze erhält.

<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(); 
     } 
    } 
} 

Antwort

0

So ähnlich?

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

Vielen Dank für Ihre Antwort. Mit Ihrer Logik kann ich die korrekte Anzahl von "Prin" -Objekten zurückgeben. Ich bekomme jedoch undefiniert auf der prinObject-Variable. getItem (i) gibt undefined zurück und Item (i) gibt null zurück. Irgendwelche Vorschläge? – Ernie