0

XML ファイル (以下に簡略化) がありますが、ノードの内容を読み取ることができません。

<List xmlns="Default" xmlns:st="ST" xmlns:lc="LC">
  <Main>
    <st:ID>10</st:ID>
    <Info>
        <st:One>One</st:One>
        <st:Two>Two</st:Two>
        <st:Three>Three</st:Three>
    </Info>
  </Main>
</List>

試してみるとtrace(xmlOne.Main.Info.One.toString());、何も返されません。名前空間と関係があることは知っていますが、XML を作成せず、それらを削除できません。私は試した:

namespace theDefault = "Default";
use namespace theDefault;

しかし、実際にノードの内容を読み取ることはできません。では、XML を変更せずにノードの内容を読み取る最善の方法は何でしょうか?

4

1 に答える 1

0

名前空間の下のノードにアクセスするには、名前空間オブジェクトを使用する必要があります。ここで XML を使用して簡単な例を作成しました。

var message:XML = <List xmlns="Default" xmlns:st="ST" xmlns:lc="LC">
  <Main>
    <st:ID>10</st:ID>
    <Info>
        <st:One>One</st:One>
        <st:Two>Two</st:Two>
        <st:Three>Three</st:Three>
    </Info>
  </Main>
</List>;

// First create the namespace objects for the namespaces used in the XML.
var defaultNS:Namespace = new Namespace('Default');
var stNS:Namespace = new Namespace('ST');

// Find and trace the value of the "One" node.
trace(message.defaultNS::Main.defaultNS::Info.stNS::One);

E4X ノード名の前に名前空間を付ける必要があります。ID ノードにアクセスするには、次のようにします。

trace(message.defaultNS::Main.stNS::ID);

Info ノード全体を取得するには、次のようにします。

var info:XMLList = message.defaultNS::Main.defaultNS::Info;
trace(info);

AS3 の XML 名前空間の詳細については、Senocular の XML チュートリアルの名前空間に関するセクションを参照してください。

于 2013-06-05T00:18:55.583 に答える