3

重複の可能性:
e4x / as3: 名前にダッシュが含まれるノードにアクセスする方法。

SMIL を使用するように XML の名前空間を設定し、次の方法で要素の src 属性を取得できます。

my.node.@src「これはいくつかのURLです」を取得します

ただし、「system-bitrate」という別の属性があります。マイナス記号のせいで、私はできませ@system-bitratemy.node.attribute('system-bitrate')

奇妙なことに、うまくいきませんmy.node.attribute('src')。これは名前空間が原因だと思いますか?では、を使用して属性を取得するにはどうすればよいny.node.attributeですか?

機能するのは だけですmy.node.attributes()[1]それが「正しい方法」ではないことはわかっているので、誰かが私を啓発できることを願っています!

参考までに、私はSMILファイルを扱っています

** 編集 **

私が使用している XML に必要な名前空間は次のとおりです。 default xml namespace = new Namespace('http://www.w3.org/2001/SMIL20/Language');

そして、私が扱っている XML の例:

<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <head>
    <meta name="title" content="Live"/>
  </head>
  <body>
    <switch>
      <video src="myStreamName" system-bitrate="200000"/>
    </switch>
  </body>
</smil>

** DennisJaaman のコード サンプル **

default xml namespace = new Namespace('http://www.w3.org/2001/SMIL20/Language');

var xml:XML = XML(event.target.data);
for each(var o:XML in xml.body['switch'].video) {
    if(!hs) hs = o;
    else {
        trace(o.attributes()[1]); // works
                trace(o.@url); // doesn't work either (makes me wonder about NS issues
                trace(o['@system-bitrate']); // doesn't work
                trace(o.attribute('@system-bitrate') // doesn't work
                // etc etc, I just left a few in here
    }
}
4

3 に答える 3

4

以下のサンプルのように角かっこを使用してみてください。

default xml namespace = new Namespace("http://www.w3.org/2001/SMIL20/Language");
var xmlSmpl:XML=<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <head>
    <meta name="title" content="Live"/>
  </head>
  <body>
    <switch>
      <video src="myStreamName" system-bitrate="200000"/>
    </switch>
  </body>
</smil>;

trace (xmlSmpl.body['switch']['video']['@system-bitrate']);
于 2011-07-11T22:10:19.173 に答える
2

見よ!QNameの力!

my.node.attribute( 
    new QName( 'http://www.w3.org/2001/SMIL20/Language', 'system-bitrate' ) 
)

属性(および子孫、および子...)に関することは、そのパラメーターがタイプ*(匿名)であることです。これは実際には文字列ではなく、バックグラウンドで QName (URI なし) に強制されるためです。これは、上記の URI の下で何かをデフォルト URI の下で検索していたことを意味します。

上記のコードがどのように機能するか教えてください。

于 2011-07-13T17:47:00.710 に答える
0

この投稿をチェックしてください:

e4x / as3: 名前にダッシュが含まれるノードにアクセスする方法

******編集****:

また、次の表記を使用して、- (ダッシュ) を含む XML 属性を取得します。

trace("Video system-bitrate: " + my.node.video["@system-bitrate"]);

これらは機能しません:

trace("Video system-bitrate: " + my.node.video.@["system-bitrate"]);
trace("Video system-bitrate: " + my.node.video.attribute("@system-bitrate"));

詳細については、LiveDocsを確認してください

乾杯

于 2011-07-13T14:21:39.977 に答える