在AS3中,XML节点值如何用作另一个节点?

在AS3中,XML节点值如何用作另一个节点?,xml,flash,apache-flex,actionscript-3,adobe,Xml,Flash,Apache Flex,Actionscript 3,Adobe,假设我有一个XML <xml> <lang>en</lang> <en> <text id="123">One Two Three</text> <text id="hello">Hello</text> </en> </xml> 我不能使用if(xmlVal.lang==“en”)。。因为lang值可以是任何字符串。但是应该有一个子节点在该名称中 如何从

假设我有一个XML

<xml>

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

</xml>
我不能使用if(xmlVal.lang==“en”)。。因为lang值可以是任何字符串。但是应该有一个子节点在该名称中


如何从节点“en或de或其他任何东西…”中获取值?

尚未测试,但这应该能让您大致了解(您可以使用“键”动态选择):

尝试使用:

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

这是一种更具扩展性和一致性的方法

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>

我不确定下面的方法是否有效,但您是否尝试过:
var langXml:*=xmlVal[xmlVal.lang]?虽然更具体一些,但如果(xmlVal.en!=undefined)
1,也可以检查
。键入变量。2.不要在顶级类上使用构造函数(向量和具有固定长度的数组除外)。@cwallenpole:2是什么意思?您是指新XML(…
)吗?
var lang:String = xmlVal.lang;
var strings:XMLList = xmlVal.elements(lang).text;
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" );