2009-11-09 6 views
0

Je peux voir que itemNodes est une nodelist DOM contenant le même nombre d'entrées que le nombre de titres. Je veux accéder à l'information à l'intérieur du nœud du titre. J'ai essayé d'utiliser itemNodes.childNodes [0] .nodeValueLors de l'utilisation de la construction de mon widget yahoo getElementsByTagName renvoyant des éléments non des noeuds

je recevoir l'erreur

Erreur: Erreur de type: itemNodes.childNodes n'a pas de propriétés

itemNodes.item mise en place (i) à l'intérieur de la boucle retourne

Titre 1: [objet DOMElement] Titre 2: [objet DOMElement] Titre 3: [objet DOMElement] Titre 4: [objet DOMElement]

Je m'attendais à des noeuds DOM. Qu'est ce que j'ai mal fait? J'utilise Yahoo widgets 4.5 sur une machine Vista? J'ai les éléments suivants dans mon fichier .KON.

x = filesystem.readFile('sample.xml'); 
doc = XMLDOM.parse(x); 



if(doc != null) 
{ 

    //print(doc.toXML()); 

    var itemNodes = doc.getElementsByTagName('title'); 

    var firstItem = itemNodes.item(0); 
print(itemNodes); 
numberOfItems = itemNodes.length; 
items=null; 
items = new Array(numberOfItems); 

for(var i = 0; i < numberOfItems; i++) 
{ 
    print("Title " + (i+1) + ": " + itemNodes); 
} 
} 

else 
{ 
    print("An error occurred. Response status: (" + request.status + ") " + request.statusText); 
} 

} 

catch(e) 
{ 
    print("An error occurred: " + e); 
} 

Le sample.xml est comme suit

<!-- Edited by XMLSpy® --> 
<bookstore> 
<book category="cooking"> 
<title lang="en">Everyday Italian</title> 
<author>Giada De Laurentiis</author> 
<year>2005</year> 
<price>30.00</price> 
</book> 
<book category="children"> 
<title lang="en">Harry Potter</title> 
<author>J K. Rowling</author> 
<year>2005</year> 
<price>29.99</price> 
</book> 
<book category="web"> 
<title lang="en">XQuery Kick Start</title> 
<author>James McGovern</author> 
<author>Per Bothner</author> 
<author>Kurt Cagle</author> 
<author>James Linn</author> 
<author>Vaidyanathan Nagarajan</author> 
<year>2003</year> 
<price>49.99</price> 
</book> 
<book category="web" cover="paperback"> 
<title lang="en">Learning XML</title> 
<author>Erik T. Ray</author> 
<year>2003</year> 
<price>39.95</price> 
</book> 
</bookstore> 

Répondre

0

J'accède au contenu du XML en utilisant ce qui suit. trimString est une fonction personnalisée. Je pense que le débogueur widget a montré que DomNodes

DOMElements
for(var i = 0; i < numberOfItems; i++) 
    { 

      //get each item node 
      var node = itemNodes.item(i); 
      var titleList = node.evaluate("title/text()"); 
      var titleString = trimString(String(titleList.item(0).nodeValue)); 
      print("TitleX: " + titleString); 
    } 
0

moteur Yahoo Widget fonctionne différemment en ce qui concerne l'analyse syntaxique XML. si vous en utilisant

itemNodes.childNodes[0].nodeValue 

pour accéder à la valeur du premier noeud enfant puis changer votre expression,

itemNodes.childNodes.item(0).nodeValue 

En général, vous pouvez accéder à la valeur de l'enfant ième à l'aide ci-dessous l'expression,

itemNodes.childNodes.item(i).nodeValue