再帰的にActionScriptでXMLをパース2
-
22-08-2019 - |
質問
私はactionscript2内のオブジェクトにXMLを解析するための効率的かつ再利用可能な方法を探しています。 XML構造自体は、それが出てXMLを解析することができイムなど、特定のノードを「ハードコーディング」することが重要です変更される場合があります。
私は通常、AS3を使用して、XMLクラスは、ドリルダウンすることは容易であるため、このような何かを必要としません。以下は、私が達成しようとしているもののAS3の擬似コードである。
public function XmlObject(myXmlObject:XML,_node:String):Object
{
var xmlObj:Object=new Object();
for(var node:uint=0;node<myXmlObject[_node].children().length();node++)
{
var attributesList:XMLList=myXmlObject[_node].children()[node].attributes();
var nodeName:String=myXmlObject[_node].children()[node].name();
switch(attributesList.length()>1)
{
//////////////////////
case false:
//////////////////////
{
for each(var attribute:XML in attributesList)
{
xmlObj[nodeName]=attribute;
}
break;
//////////////////////
case true:
//////////////////////
var values:Array=[];
for each(attribute in attributesList)
{
values.push(attribute);
xmlObj[nodeName][String(attribute.name())]=attribute;
}
break;
}
}
return xmlObj;
}
この上の任意の助けを事前に感謝します!
解決
私は完全にアレイvalues
に何が起こるか...あなたの擬似コードを理解していませんでしたか?再帰的ではないように思わ、単純にも...に廃棄しているようだ...
問題があり、XMLやECMA-オブジェクトのセマンティクスが異なることを...
あなたはこれをマッピングするだろうか?
<cart><item /><item /></cart>
、その後、これは何でしょう?
<cart><item /><cart>
と何これ?
<cart />
問題は、あなたが知ることができないので、何cart.item
は、あなたが言う場合でも...となります...最初のケースでは、あなたが第三何で、第二の特性で、配列を持っていること、ですあなたがcart.item
のプロパティにアクセスする場合に、単一の子ノードを配列にラップされます、あなたはまだエントリを持っていることができなかったので、null
がnull
では...ないことAS2は文句を言うだろうが、それでも、これはかなりugglyです...
E4XはECMAの世界からXMLオブジェクトをトラバースするための最良の方法のようです... ます。http://コード少し思考の後、私は一緒に少し(かなりハック)ライブラリを入れています.google.com / P / as24x / に あなたはそれが構文...
についてかなりの...より多くの機能をサポートするものの、Googleで他のライブラリを、見つけることができますこれが役に立てば幸い;)
greetz
back2dos