質問

私は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のプロパティにアクセスする場合に、単一の子ノードを配列にラップされます、あなたはまだエントリを持っていることができなかったので、nullnullでは...ないことAS2は文句を言うだろうが、それでも、これはかなりugglyです...

E4XはECMAの世界からXMLオブジェクトをトラバースするための最良の方法のようです... ます。http://コード少し思考の後、私は一緒に少し(かなりハック)ライブラリを入れています.google.com / P / as24x / に あなたはそれが構文...

についてかなりの...より多くの機能をサポートするものの、Googleで他のライブラリを、見つけることができます

これが役に立てば幸い;)

greetz

back2dos

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top