1

XMLList アイテムにアクセスして XML オブジェクトに変換しようとしています。

私はこの表現を使用しています:

masonicXML.item.(@style_number == styleNum)

たとえば、一致する場合はすべて正常に動作しますが、一致しない場合は、XML としてキャストしようとするとエラーが発生し、整形式でなければならないというメッセージが表示されます。したがって、XML としてキャストする前に、式が一致することを確認する必要があります。XMLList 変数に設定して、次のような text() プロパティとしてチェックしてみました:

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

ただし、一致しない場合はエラーが発生します。一致していれば問題なく動作します。

ありがとう!

4

3 に答える 3

1

私の経験では、結果を確認する最も簡単な方法は、リストの 0 番目の要素を取得して、それがnull.

これは、いくつかの調整を加えたコード サンプルです。defaultItemの型をからXMLListに変更しXML、それをリストの 0 番目の要素に割り当てていることに注意してください。

var defaultItem:XML = 
    DataModel.instance.masonicXML.item.(@style_number == styleNum)[0];
if( defaultItem != null ) 
{
    DataModel.instance.selectedItem = defaultItem;
}
于 2009-04-16T13:24:24.807 に答える
0

Matt の null チェックは良い解決策です。(XMLList 内に null 項目がある可能性がない限り..おそらくそうではありませんが、私はこれを確認していません。)

XMLList を String にキャストせずに長さを確認することもできます。

if (defaultItem.@style_number.length() > 0)

String や Array との違いは、XMLList はプロパティでlength()はなくメソッドであることです。

于 2009-05-20T22:08:23.227 に答える