代码之家  ›  专栏  ›  技术社区  ›  matt burns

使用flex从SOAP Web服务读取e4x格式的XML时出现问题

  •  1
  • matt burns  · 技术社区  · 15 年前

    更新 :问题与 名称空间或灵活性。我的 WebService正在返回包装的 XML。在质疑Java之前,我把我最没有经验的语言归咎于…

    我有一个基本的SOAP Web服务,在从Flex中读取结果时遇到了问题。

    我是一个坚实的Java程序员,只是试图让我的头周围Adobe Flex。

    documentation 我应该能够使用“webservice”返回e4x格式的结果。

        <mx:WebService id="CurrentLayersWS" wsdl="http://localhost:8080/myproject/ws/myservice.wsdl" showBusyCursor="true" result="updateSelected(event)" fault="Alert.show(event.fault.faultString), 'Error'">
          <mx:operation name="publisher" resultFormat="e4x">
            <mx:request>
             <publisherRequest>
               <getConfiguration/>
             </publisherRequest>
            </mx:request>
          </mx:operation>
        </mx:WebService>
    

    如您所见,响应是由函数“updateSelected”处理的,它看起来像:

    private function updateSelected(event:ResultEvent):void {
        var responseXml:XML = XML(event.result);
    

    不幸的是,事件对象似乎被嵌套并进行了奇怪的编码。当我使用调试器时,我看到responseXML的类型为xmlList,其中包含一个XML类型的元素(在索引0处),该元素仅包含以下XML:

    <sch:temp xmlns:sch="http://www.mycompany.co.uk/myproject/schemas" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
      &lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
    &lt;ns2:publisherResponse xmlns:ns2="http://www.mycompany.co.uk/myproject/schemas"&gt;
        &lt;getConfigurationResponse&gt;
            &lt;configuration&gt;
            ...etc
    

    为什么我的XML嵌套在具有根节点“sch:temp”的文档中?

    2 回复  |  直到 12 年前
        1
  •  0
  •   Eric Belair    15 年前

    这是一个命名空间。我不知道为什么会出现这种情况,但是,在我们开始在一个Flex应用程序中使用.NET WebServices之后,我不得不处理类似的事情。我只需要引用ActionScript中的名称空间:

    <mx:Script>
        <![CDATA[
            private namespace schNamespace = "http://www.mycompany.co.uk/myproject/schemas";
    
            use namespace schNamespace;
        ]]>
    </mx:Script>
    

    试试看……可能行得通。

        2
  •  0
  •   matt burns    15 年前

    问题根本与名称空间或flex无关。我的WebService正在返回包装好的XML。在质疑Java之前,我把我最没有经验的语言归咎于…