問題タブ [e4x]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-flex - E4X でのノードの削除/交換 (AS3 - Flex)
アプリケーションでリスト/グリッド コントロールを作成し、それをWeb アプリケーションFlex
で使用しています。.NET
非常に長い話を短くするために、シリアル化されたオブジェクトの Web サービスから XML を取得しています。1 ページに表示できるページ数に制限があります。データ グリッドをページ化し、ページ間で並べ替え、いくつかの基本的なフィルター処理を行いました。
ページングに関しては、ページをキーとする辞書を使用し、そのページの XML を保存しています。このようにして、このディクショナリに保存したページにユーザーが戻ってくるたびに、Web サービスにアクセスする代わりに、ローカル メモリから XML を取得できます。基本的に、データのページの Web サービスへの各呼び出しから取得したデータをキャッシュしています。
キャッシュが期限切れになる可能性のあるものがいくつかあります。フィルタリングとソートが主な理由です。ただし、ユーザーはエディタを開いてグリッド内のデータ行を編集できます。編集したデータが原因で、行に表示されるデータが古くなる可能性があります。簡単に Web サービスにアクセスしてページ全体のデータを取得できますが、ページ サイズは実行時に設定されるため、取得するレコードが大量に表示される可能性があります。
それでは、私が経験している問題の核心に触れさせてください。データのページ全体が返されないようにするために、完全に更新されたレコードを要求する Web サービスを呼び出します (エディターがデータの保存を処理します)。
カスタム オブジェクトを使用しているため、サーバー上でそれらを XML にシリアル化する必要があります (これは、ソフトウェアの他の部分で既に処理されています)。すべてのデータは、e4x で XML を介して処理されます。Dictionary のキャッシュは、XMLList として格納されます。
それでは、私のコードをお見せしましょう...
基本的に、置き換えたいノードのIDを取得します。次に、キャッシュの Data プロパティ ( XMLList
) でそれを見つけます。2 行目のフィルターが を返すので、存在することを確認しますXMLList
。
私が抱えている問題は、削除行にあります。その行をリストからそのノードを削除することはできません。削除行の次の行が機能します。ノードをリストに追加しました。
そのノードを置換または削除するにはどうすればよいですか (キャッシュの .Data プロパティのフィルター ステートメントから見つけたノードを意味します)。
これが投稿されたときに、すべての変数のアンダースコアがエスケープされたままにならないことを願っています! そうでなければthis._ == this
._
javascript - E4X : ルート ノードへの割り当て
ここでは Adobe Flex/Air を使用していますが、私の知る限り、これはすべての JavaScript に当てはまります。私はこの問題に何度か遭遇しましたが、そこには簡単な解決策があるはずです!
次の XML があるとします (e4x を使用):
次のコードを使用して、サンプル ノードの内容を変更できます。
ただし、これがある場合:
ルート ノードの内容を変更するにはどうすればよいですか?
XMLオブジェクトに文字列を割り当てようとしているので、明らかにうまくいきません。
javascript - e4xを使用したFlexでのXMLの編集
Flexには、次のようなxmlドキュメントがあります。
実行時に、ルートの下のノードごとにTextInputコントロールを作成し、値をXMLの値にバインドします。私が知る限り、実行時にBindingUtilsを使用してe4xノードにバインドすることはできません(ここで間違っているかどうか教えてください!)ので、これを手動で実行しようとしています:
私の問題は、ユーザーがTextInputsの1つを編集すると、割り当てられるノードが常にforループで最後に検出されるノードになることです。私はC#のこのパターンに慣れています。匿名関数が作成されるたびに、使用される値の値の「スナップショット」が取得されるため、「ノード」はハンドラー関数ごとに異なります。
ハンドラーで使用するノードの現在の値の「スナップショットを作成」するにはどうすればよいですか?または、Flexで別のパターンを使用する必要がありますか?
actionscript-3 - Actionscript3 E4X XML and CSS: Do I really have to use CDATA?
When working with CSS inside of XML such as
when parsed in flash, if I don't use CDATA like the following:
then the parsed data drops down a line for every "<" character it sees.
When parsing the data into a single-line text field, nothing was shown because it was actually down a line. Soon as I wrap it inside of CDATA
it works great. I have played with prettyIndent
, and as I understand ignoreWhite
is true by default.
Is there a way to parse the data without the use of CDATA
and keep the implied line breaks out?
EDIT 1 (10/10/08): Thank you, but I am actually looking for a Function or Method. Escaping each is much more cumbersome than using CDATA. The only reason I don't want to use CDATA is that I was taught to stay clear of it. If ActionScript has a method associated to E4X XML handling that will remove the requirement to wrap my XML in CDATA, I would love to know about it.
EDIT 1 (10/15/08): Thanks Philippe! I never would have thought that HTML formatting in Flash is treated as whitespace. The answer was
<3AS3
javascript - この E4X コードがデフォルトの名前空間を尊重しないのはなぜですか?
E4X を使用しようとして、Firefox 拡張機能をハッキングしています。ただし、奇妙な問題に遭遇しました。
最初の 2 つのログ ステートメントは "Guys" を出力します。3番目は空白です。どうしたの?デフォルトの名前空間を指定しましたが、実際には、2 番目のログ ステートメントで使用しているものとまったく同じです。なぜこれが機能しないのですか?
xml - E4X条件付き呼び出しは、一致が1つしかないものを返しませんか?
わかりました、これが私のコードです:
1回以上発生した場合にのみ検出されているようです。
私は何か間違ったことをしていますか?
xml - AS3 では、なぜ XML と XMList は関連のない (継承に関して) クラスなのですか?
どちらもオブジェクトを直接拡張するため、XML 広告 XMLList を無関係にすることは、AS3 コア ライブラリの設計上の欠陥であると思わざるを得ません。XML を XMLList に拡張すると、XML が 1 つのメンバーのみを持つ XMLList と見なされる場合に、よりクリーンなシステムになるのではないでしょうか?
これにより、E4X クエリが XML または XMLList のいずれかを返す可能性があり、キャスト エラーが発生する可能性があるという非常に煩わしい慣行も回避できます。
では、XML と XMLList が共通の型として Object のみを持つように設計されていると考えていない理由はありますか?
xml - リモートオブジェクトが E4X で XML を返すようにするにはどうすればよいですか?
BlazeDS を Java サーバーにフル活用する Flex アプリケーションを作成しています。私はリモート オブジェクトをよく使用しますが、オブジェクトを返すよりも XML を受信する方がクリーンで高速なインスタンスに遭遇しました。
BlazeDS を介して XML を返すのは簡単です。Java で Dom4j を使用して XML を構築し、BlazeDS サービスを介してルート要素を返します。BlazeDS は Dom4j オブジェクトを XML に変換してくれます。
Flex 側でこのオブジェクトを受け取ると、XML ではなくすべての ObjectProxy オブジェクトが存在します。以前に HttpService 呼び出しでこれを見たことがあります。それを修正するために、resultFormat を E4X に変更しました。
ただし、RemoteObject サービス呼び出しで resultFormat を設定できません。
これらの ObjectProxies を E4X 形式の XML に変換できる方法はありますか?
xml - AS3 で E4X を使用して XML ノードに新しい属性を作成する
それを行う方法はありますか?
apache-flex - E4X 式が一致するかどうかを確認するにはどうすればよいですか?
XMLList アイテムにアクセスして XML オブジェクトに変換しようとしています。
私はこの表現を使用しています:
たとえば、一致する場合はすべて正常に動作しますが、一致しない場合は、XML としてキャストしようとするとエラーが発生し、整形式でなければならないというメッセージが表示されます。したがって、XML としてキャストする前に、式が一致することを確認する必要があります。XMLList 変数に設定して、次のような text() プロパティとしてチェックしてみました:
ただし、一致しない場合はエラーが発生します。一致していれば問題なく動作します。
ありがとう!