0

問題の発生箇所は特定できましたが、原因と修正方法がわかりません。

他のフレームでも機能しますが、ほとんど違いはありません: XML は、いくつかの削除が成功した後に削除できません:

<work name="New Work Title 14" img="" logo="" link="" image=""></work>
<work name="New Work Title 15" img="" logo="" link="" image=""></work>
.... etc

同じスクリプトが機能するフレームからの XML:

<person name="New Object Name 8" poz="" mail="" thumb="" img=""/>

最初のトレースと 3 番目のトレースでは、いくつかの削除が成功した後、同じ値が得られます。

function deleteWork(){

    trace(siteDataXML[Work_Node].length()) // freezes on ~10

    trace(delete siteDataXML[Work_Node][Work_List.selectedIndex]) //always true

    trace(siteDataXML[Work_Node].length()) // freezes on ~10


    Work_DP.removeItemAt(Work_List.selectedIndex); //
    trace("dp ", Work_DP.length)                 // decreases as it should


    debug("Data Deleted. Autosaving...")
    Work_Save();

}

理由として考え</work>られるのは、他のテスト ファイルで同様の xml ノードを削除することです。</work>削除せずにxmlを生成すると、正常に機能します。

何か案が?誰かが助けてくれることを願っています。

アップデート!

理由が分かった気がします。

Flash は自動的に変換します

<work name="New Work Title 14" img="" logo="" link="" image=""></work>

<work name="New Work Title 14" img="" logo="" link="" image="" />

この削除の後、ノードは削除されません。

追加しました<![CDATA[]]>

<work name="New Work Title 14" img="" logo="" link="" image=""><![CDATA[]]></work>

しかし、なぜこれが起こるのですか?

4

1 に答える 1

1

締め切りの原因私はそれに多くの時間を費やすことができず、管理パネルページのスクリプトを作り直すことによってそれを回避しました。より良い方法を見つけました。

新しいクリーンファイルでその問題をシミュレートしようとしていますが、できません...

<![CDATA[]]>解決策は、会話から保護するためにxmlに追加することだと思います。すべてのXMLが同じ形式のままである場合、削除は正常に機能するはずです。

PSテキストがxmlに変換されて保存されると、cdataはエスケープされた形式に変換されます。cdataでhtmlText形式を維持する方法は次のとおりです。

someXML.someNode[i] = new XML('<test aaa="aaaa" bbb="bbbb" ccc="cccc"><![CDATA['+someTextField.htmlText+']]></test>')

そうではありません:

someXML.someNode[i] = '<![CDATA['+someString+']]>'
于 2012-04-25T19:35:20.467 に答える