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

发布于 2024-11-14 19:43:24 字数 717 浏览 4 评论 0原文

假设我有一个 XML,

<xml>

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

</xml>

仅当 lang 值为“en”时,“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 或 de 或其他......”获取值?

Suppose I have an XML

<xml>

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

</xml>

the "en" tag is only if the lang value is "en".
If the value of lang is "de"

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

How do I get this name dinamicaly in my actionscript 3 code.

Suppose I want to use

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

I can't use if (xmlVal.lang == "en") .. because the lang value can be any string. but there should be a child node in that name..!!

How do I get values from node "en or de or what ever.." ??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笑咖 2024-11-21 19:43:24

还没有测试过,但这应该给您一个总体思路(您可以使用“键”动态选择):

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

var type:String = xmlVal.lang;

var result:XML = xmlVal[type];

Haven't tested, but this should give you the general idea (that you can dynamically select using the "key"):

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

var type:String = xmlVal.lang;

var result:XML = xmlVal[type];
故事↓在人 2024-11-21 19:43:24

尝试使用:

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

Try to use:

var lang:String = xmlVal.lang;
var strings:XMLList = xmlVal.elements(lang).text;
淡看悲欢离合 2024-11-21 19:43:24

这是更具可扩展性和一致性的方法之一。

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" );

This is one of the more extensible and consistent ways to do this.

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);

You're better off, though, if you can change it from:

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

to

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

Then you can call:

var xmlVal:XML = XML( /*above*/ );
var finalList:XMLList = xmlVal.child( "lang" ).( @abbreviation == "en" );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文