Actionscript 3 Flex4-如何以编程方式加载XML文件?
我已经使用HTTPService完成了EmployeeDetails应用程序。但我想以编程方式加载XML文件。我使用URLLoader和URLRequest进行了尝试。但是没有运气。我做不到 使用HTTPService的示例代码: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"/> &
<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;