Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Flex4-如何以编程方式加载XML文件?_Actionscript 3_Apache Flex_Flex4 - Fatal编程技术网

Actionscript 3 Flex4-如何以编程方式加载XML文件?

Actionscript 3 Flex4-如何以编程方式加载XML文件?,actionscript-3,apache-flex,flex4,Actionscript 3,Apache Flex,Flex4,我已经使用HTTPService完成了EmployeeDetails应用程序。但我想以编程方式加载XML文件。我使用URLLoader和URLRequest进行了尝试。但是没有运气。我做不到 使用HTTPService的示例代码: <fx:Declarations> <s:XMLListCollection id="employeeXMLList" filterFunction="xmlListCollectionFilterFun"/> &

我已经使用HTTPService完成了EmployeeDetails应用程序。但我想以编程方式加载XML文件。我使用URLLoader和URLRequest进行了尝试。但是没有运气。我做不到

使用HTTPService的示例代码:

    <fx:Declarations>   
    <s:XMLListCollection id="employeeXMLList" filterFunction="xmlListCollectionFilterFun"/>
    <s:HTTPService id="employeeService" url="http://localhost/demo/TextXmlFile.xml" 
                   method="POST" result="employeeService_resultHandler(event)"
                   fault="employeeService_faultHandler(event)"
                   resultFormat="xml"/>
</fx:Declarations>
<fx:Script>
    <![CDATA[
        protected function employeeService_resultHandler(event:ResultEvent):void
        {
            var xmlList:XMLList = XML(event.result).Employee;
            employeeXMLList = new XMLListCollection(xmlList);
        }

        protected function employeeService_faultHandler(event:FaultEvent):void
        {
            spark.components.Alert.show(event.fault.faultString,"Fault Error Message");
        } 
    ]]>
</fx:Script>

我遇到了类似“访问未定义属性urlRequest”的错误。

这似乎是打字错误

private var request:URLRequest;
private var xmlData:XML;
private var loader:URLLoader = new URLLoader();

private function loadXML(event:Event):void
{
    xmlData = new XML(event.target.data);     //Note here data instead of date.          
}

private function load():void
{
    request = new URLRequest("http://localhost/demo/TextXmlFile.xml");
    request.contentType = "XML";
    request.method = URLRequestMethod.POST;
    loader.addEventListener(Event.COMPLETE, loadXML);
    loader.load(request);
}
原因:

您只能在函数外声明和初始化/实例化对象

通常,编译器期望函数的外部应该是变量声明(
protected/public/private
)。所以我们不能在函数外赋值,比如

request.contentType = "XML";
request.method = URLRequestMethod.POST;
这正是函数发挥作用的地方。有时,如果所有必需的函数和变量都是静态的,则可以使用静态块

有关AS3静态块的更多详细信息

或者这样检查


检查文档:

是。。没错。请看我的更新。您能告诉我错误的原因吗?@user请查看我的更新答案。主要原因是编译器不允许使用变量声明以外的任何语句。可以使用静态块AS3。非常感谢。。。我理解我的错误。我还有一个问题。如果我使用的是itemrender,则会收到类似“警告:无法绑定到类“XML”(类不是IEventDispatcher)上的属性“name”的警告消息。所以我无法加载我的数据。你能引导我移除警告吗?@user ya肯定会有很多人(我)会帮助你的。为什么不另问一个问题呢?这里有你的相关代码。因此,它可能适用于问题标题。如果以上答案正确,请标记为正确。
            private var urlRequest:URLRequest;
        urlRequest = new URLRequest("http://localhost/TextXmlFile.xml");
        urlRequest.contentType = "XML";
        urlRequest.method = URLRequestMethod.POST;
private var request:URLRequest;
private var xmlData:XML;
private var loader:URLLoader = new URLLoader();

private function loadXML(event:Event):void
{
    xmlData = new XML(event.target.data);     //Note here data instead of date.          
}

private function load():void
{
    request = new URLRequest("http://localhost/demo/TextXmlFile.xml");
    request.contentType = "XML";
    request.method = URLRequestMethod.POST;
    loader.addEventListener(Event.COMPLETE, loadXML);
    loader.load(request);
}
request.contentType = "XML";
request.method = URLRequestMethod.POST;