【问题标题】:In AS3 how XML Node value use as another node?在 AS3 中如何将 XML 节点值用作另一个节点?
【发布时间】:2011-06-09 12:18:10
【问题描述】:

假设我有一个 XML

<xml>

<lang>en</lang>
<en>
    <text id="123">One Two Three</text>
    <text id="hello">Hello</text>
</en>

</xml>

“en”标签仅在 lang 值为“en”时出现。 如果 lang 的值为 "de"

<lang>de</lang>
<de>
        <text id="123">One Two Three</text>
        <text id="hello">Hello</text>
</de>

如何在我的 actionscript 3 代码中动态地获得这个名称。

假设我想使用

var xmlVal = new XML(... the above xml)
var lang = xmlVal.lang;

我不能使用 if (xmlVal.lang == "en") .. 因为 lang 值可以是任何字符串。但应该有那个名字的子节点..!!

如何从节点“en or de or what ever..”获取值??

【问题讨论】:

  • 我不确定以下方法是否有效,但您是否尝试过:var langXml:* = xmlVal[xmlVal.lang];?

标签: xml flash apache-flex actionscript-3 adobe


【解决方案1】:

尚未测试,但这应该会给您大致的想法(您可以使用“键”动态选择):

var xmlVal:XML = new XML(... the above xml);

var type:String = xmlVal.lang;

var result:XML = xmlVal[type];

【讨论】:

  • 虽然更具体一些,但您也可以检查if( xmlVal.en != undefined )
  • 1.键入您的变量。 2. 不要在顶级类上使用构造函数(除了有固定长度的向量和数组)。
  • @cwallenpoole:#2 是什么意思?你指的是new XML(...吗?
【解决方案2】:

尝试使用:

var lang:String = xmlVal.lang;
var strings:XMLList = xmlVal.elements(lang).text;

【讨论】:

    【解决方案3】:

    这是一种更可扩展和更一致的方法。

    var xmlVal:XML = XML( /*above*/ );
    // xmlVal.child("lang"); is a long-hand for xmlVal.lang, but more explicit
    // it can also save you headache later in some corner cases.
    var langs:XMLList = xmlVal.child("lang"); 
    // if there is only one lang child, this will grab its' child text
    // use toString to make sure you only grab the string pieces.
    var langVal:String = langs[0].text().toString().replace(/\s/g, "");
    var langValue:XMLList = xmlVal.child(langVal);
    

    不过,如果你能改变它,你会更好:

    ...
    <lang>en</lang>
    <en>
    

    ...
    <lang abbreviation="en"><text id="123">One Two Three</text>
        <text id="hello">Hello</text></lang>
    

    然后你可以调用:

    var xmlVal:XML = XML( /*above*/ );
    var finalList:XMLList = xmlVal.child( "lang" ).( @abbreviation == "en" );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 2022-06-22
      • 2019-12-07
      相关资源
      最近更新 更多