2009-04-15 6 views
1

Ich versuche, auf ein XMLList-Element zuzugreifen und es in ein XML-Objekt zu konvertieren.Wie kann ich feststellen, ob der E4X-Ausdruck eine Übereinstimmung aufweist oder nicht?

Ich verwende diesen Ausdruck:

masonicXML.item.(@style_number == styleNum) 

Zum Beispiel, wenn es eine Übereinstimmung alles funktioniert gut, aber wenn es keine Übereinstimmung ist dann bekomme ich einen Fehler, wenn ich werfen versuchen, es als XML sagen, dass es wohlgeformt sein. Also muss ich sicherstellen, dass der Ausdruck eine Übereinstimmung bekommt, bevor ich ihn als XML umwandle. Ich habe versucht, es zu einem XMLList variable Einstellung und wenn sie als Text() propertie wie diese Überprüfung:

var defaultItem:XMLList = DataModel.instance.masonicXML.item.(@style_number == styleNum); 
        if(defaultItem.text()) 
        { 
         DataModel.instance.selectedItem = XML(defaultItem); 
        } 

Aber es gibt mir noch einen Fehler, wenn Theres keine Übereinstimmung. Es funktioniert gut, wenn es eine Übereinstimmung gibt.

DANKE!

Antwort

1

Nach meiner Erfahrung ist der einfachste Weg für die Ergebnisse zu überprüfen, ist das 0-te Element der Liste zu packen und sehen, ob es null ist.

Hier ist Ihr Codebeispiel mit ein paar Verbesserungen. Beachten Sie, dass ich den Typ defaultItem von XMLList zu XML geändert habe, und ich es dem 0. Element der Liste zuweisen.

var defaultItem:XML = 
    DataModel.instance.masonicXML.item.(@style_number == styleNum)[0]; 
if(defaultItem != null) 
{ 
    DataModel.instance.selectedItem = defaultItem; 
} 
0

Matts Null-Check ist eine gute Lösung. (Es sei denn, es besteht die Möglichkeit innerhalb eines XMLList null Gegenstände mit .. wahrscheinlich nicht, aber ich habe dies nicht überprüft.)

Sie auch für die Länge des XMLList überprüfen kann, ohne es in einen String zu Gießen:

Der Unterschied zu String und Array ist, dass mit einer XMLList length() eine Methode anstelle einer Eigenschaft ist.

Verwandte Themen