2011-06-20 12 views
3

XML変数を作成しようとしていますが、{}を含める必要があります。AS3のXML変数の中括弧をエスケープする

public class MyClass { 

    private var simple:XML = 
     <config> 
      <url>{PROTOCOL}://{SERVER}/{FOLDER}/</url> 
     </config> 


    ... 

} 

FlexはPROTOCOLSERVERFOLDERという名前の変数を見つけようとしています。中かっこをエスケープすることでこれを防ぐ必要があります。

質問:どのように中括弧をエスケープできますか?

答えて

4

私は思考のカップルを持っている:

  • あなたが参照(文字列で全体の事を配置し、文字列をキャストすることができますあなたが&#123;{を置き換える使用することができ、複数行の文字列を取得するためのhere
  • &#125;}の交換はオプションです)
  • (吸うが、技術的にそれはオプションです)、その後にノードを追加し
+1

+1は中括弧のHTMLエンティティを知るためのものです。あなたはただそれを知っていますか?またはあなたはそれを見なければならなかったか?あなたがそれを見たら?どのようにどこに? – JeffryHouser

+1

(これらのすべては、Flextrasの提案がうまくいかないことを前提としていますが、それは明らかに良いことです、私のものは「明らかに失敗しました、ハックしよう」) – cwallenpoole

+0

@Flextras私は、私は自分のAsciiテーブルを見つけるのがずっと速いです。 – cwallenpoole

2

CDATA宣言を使用すると、これはw/o問題をコンパイルする必要があります。これは、MXMLスクリプトタグ内に「非標準XML」を可能にするのと同じ方法である:

private var simple:XML = 
    <config> 
     <url><![CDATA[{PROTOCOL}://{SERVER}/{FOLDER}/]]></url> 
    </config> 

中括弧のための標準的なHTMLエンティティコードがあるように思えません。 @ cwallenpooleの答えに基づいて、ASCII codeを使用して作成することができます。 {閉じ括弧のためのオープンブラケットと&#125のために:

private var simple:XML = 
    <config> 
     <url>&#123;PROTOCOL&#125;://&#123;SERVER&#125;/&#123;FOLDER&#125;</url> 
    </config> 
+0

に評価をすることができます。通常はxmlで '{' charが許されているので、これは悪いことです。 * as3 xml *では禁止されています。 2番目の解決方法は機能しません。第3の解決策が働く。 – sixtyfootersdude

+0

@sixtyfootersdude私は答えから間違った提案を削除しました。それはdownvoteを持っている理由ですか?私が理解しているように、これらのソリューションの両方でXMLを変更しないでください。なぜあなたは最初の悪戯を悪いと主張しているのですか?しかし、2番目の良い? – JeffryHouser

3

私は、XML内のその文字列をバインドし、文字列にテキストを割り当てるだろう - すべてをエスケープする必要がなくなります。

public class MyClass { 

    private var simple:XML = null; 

    public function MyClass() 
    { 
     super(); 

     var s:String = "{PROTOCOL}://{SERVER}/{FOLDER}/"; 
     simple = <config> 
      <url>{s}</url> 
     </config>; 
    } 

    ... 

} 

あなたはエスケープが必要です大量のテキストを持っている必要があれば、あなたはcwallenpooleによって提案された文字列からXMLインスタンスを作成したり、特定の要素の文字列を結合する関数を作成を検討する必要がある場合がありますそれを適切な親要素に追加します。

0

また、{} w/のバックスラッシュをエスケープすることもできます。たとえば、{}は正規表現で使用されますが、RegExpValidatorを使用する場合はバインディングも意味します。

<mx:RegExpValidator id="regExpValidator" 
        expression="[A-Za-z0-9]\{2\}[0-9]\{1,4\}" 
        flags="gi" 
        required="true" /> 

これは私がCDATAはXMLに留まり、それの構造を変更するので、あなたの最初のソリューションが良いではないと思われる{2}式とフロースルーの代わりに、2

+0

私はインラインas3 XML記法では動作しません。 – BrunoJCM