Actionscript 3 如何在FLex中包含并使用E4x获取XML值
我在UploadCompleteData()中从servlet获取xml响应,我需要在flex中使用E4x获取xml的值。 我的代码如下: //获取xml的函数Actionscript 3 如何在FLex中包含并使用E4x获取XML值,actionscript-3,apache-flex,flex4,flex3,e4x,Actionscript 3,Apache Flex,Flex4,Flex3,E4x,我在UploadCompleteData()中从servlet获取xml响应,我需要在flex中使用E4x获取xml的值。 我的代码如下: //获取xml的函数 function OnCompleteupload(event:Event):void { xml:XML = event.event.currentTarget.data(); // this will give me the Xml //here I need to get the values from xml using
function OnCompleteupload(event:Event):void
{
xml:XML = event.event.currentTarget.data(); // this will give me the Xml
//here I need to get the values from xml using E4x
}
//XML响应类似于
<Students>
<Student>
<rollNo>50</rollNo>
<totalMarks>100</totalMarks>
</Student>
</Students>
50
100
我需要获取类似于xml[0]的值。我是一个初学者,所以请给出一些建议,并告诉我是否有任何jar,我需要包括在我的项目中,以使用E4X
首先,请注意您的访问权限,而不是方法()。在ActionScript3中,与java不同,您可以使用从java角度看像公共变量的getter和setter,但它们在幕后调用函数 所以你的代码应该是
function OnCompleteupload(event:Event):void
{
xml:XML = new XML(event.event.currentTarget.data); // this will give me the Xml
//here I need to get the values from xml using E4x
}
E4X的有趣之处在于它内置于语言中,因此不仅不需要库(编译为.swc文件的3个库,而不是java.jar),而且可以内联xml,因此要测试一个快速代码段,这将起作用:
var xml:XML = <Students>
<Student>
<rollNo>50</rollNo>
<totalMarks>100</totalMarks>
</Student>
</Students>;
如果您想了解更多信息,Lee Brimelow在actionscript 3中提供了两个关于XML和E4X的简单视频教程:
更新
根据您的评论,您正在处理。上面的ActionScript 3高级XML教程也介绍了这一点
你可以这样做:
var ns:Namespace = new Namespace("urn:xxx:proj:ken");
var xml:XML = <Students xmlns="urn:xxx:proj:ken"> <Student> <rollNo>20</rollNo> <totalMarks>425</totalMarks> </Student> </Students>;
//access via namespace
trace(xml.ns::Student[0].ns::rollNo);
var ns:Namespace=新名称空间(“urn:xxx:proj:ken”);
var-xml:xml=20425;
//通过命名空间访问
跟踪(xml.ns::Student[0].ns::rollNo);
这可能会变得更详细一些,但是如果在同一文档中有更多的XML名称空间,那么它是灵活的
如果XML仅使用这一名称空间,则可以将其设置为默认XML名称空间:
var ns:Namespace = new Namespace("urn:xxx:proj:ken");
default xml namespace = ns;
var xml:XML = <Students xmlns="urn:xxx:proj:ken"> <Student> <rollNo>20</rollNo> <totalMarks>425</totalMarks> </Student> </Students>;
trace(xml.Student[0].rollNo);//notice you don't need to use ns:: before accessing each node as the default xml namespace is set above
var ns:Namespace=新名称空间(“urn:xxx:proj:ken”);
默认xml名称空间=ns;
var-xml:xml=20425;
跟踪(xml.Student[0].rollNo)//注意,在访问每个节点之前,不需要使用ns::因为上面设置了默认的xml名称空间
Hi-George谢谢你的回答,但是当我使用xml时,我会得到null。学生[0]我猜这是在你的onCompletePload()函数中,对吗?如果是这样,请首先尝试以下操作:trace(xml.toXMLString())
。如果在这里得到null,则表示数据未正确转换为XML对象。如果没有得到null并看到实际的XML文档,请确保结构与预期相符。你能把更新后的发布到CompletePload
函数和跟踪结果上吗?是的,我能在xml之后看到xml。下面是我在这之后得到的结果:20 425见上面更新的答案。请花时间阅读并理解提供的文档/资源。如果答案有用,请投票和/或标记答案。
var ns:Namespace = new Namespace("urn:xxx:proj:ken");
default xml namespace = ns;
var xml:XML = <Students xmlns="urn:xxx:proj:ken"> <Student> <rollNo>20</rollNo> <totalMarks>425</totalMarks> </Student> </Students>;
trace(xml.Student[0].rollNo);//notice you don't need to use ns:: before accessing each node as the default xml namespace is set above