Java 如何解组包含@xmlanyement和DIFFGR的XML代码

Java 如何解组包含@xmlanyement和DIFFGR的XML代码,java,soap,xml-parsing,jaxb,jax-ws,Java,Soap,Xml Parsing,Jaxb,Jax Ws,我正在尝试处理来自Web服务的soap响应。我已经使用wsimport工具生成了用于处理soap响应的客户端类。下面是示例soap响应和java处理程序 Soap响应: <?xml version="1.0" encoding="UTF-8"?> <DataSet xmlns="http://tempuri.org/"> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XM

我正在尝试处理来自Web服务的soap响应。我已经使用wsimport工具生成了用于处理soap响应的客户端类。下面是示例soap响应和java处理程序

Soap响应:

<?xml version="1.0" encoding="UTF-8"?>
<DataSet xmlns="http://tempuri.org/">
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="NTIS">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Error" type="xs:string" minOccurs="0"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    <NewDataSet xmlns="">
      <NTIS diffgr:id="NTIS1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
        <Error>UserName and/or Password are invalid.</Error>
      </NTIS>
    </NewDataSet>
  </diffgr:diffgram>
</DataSet>
现在的问题是我无法处理来自“GetDeAppSearchResult().getAny()”的结果conet。请建议如何处理该内容或将其解组

org.tempuri.deAppSearchResponse$DEAAppSearchResult@7bc768
[diffgr:diffgram:null]

我遇到了类似的问题,我使用解组器将详细的节点解组为一个有意义的对象。在我的问题中,生成了详细的类(示例中为NewDataSet)。以下内容可能适用于您:


你能告诉我什么是
节点
类吗??它阻止我说
MessageElement[]
无法解析到
节点
。谢谢您的SOAP服务是Microsoft实现吗?上述方法可以解组Microsoft diffgram对象。
package org.tempuri;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.w3._2001.xmlschema.Schema;


/**
 * <p>Java class for anonymous complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="GetQueryNewResult" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;sequence>
 *                   &lt;element ref="{http://www.w3.org/2001/XMLSchema}schema"/>
 *                   &lt;any/>
 *                 &lt;/sequence>
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "getQueryNewResult"
})
@XmlRootElement(name = "GetQueryNewResponse")
public class GetQueryNewResponse {

    @XmlElement(name = "GetQueryNewResult")
    protected GetQueryNewResponse.GetQueryNewResult getQueryNewResult;

    /**
     * Gets the value of the getQueryNewResult property.
     * 
     * @return
     *     possible object is
     *     {@link GetQueryNewResponse.GetQueryNewResult }
     *     
     */
    public GetQueryNewResponse.GetQueryNewResult getGetQueryNewResult() {
        return getQueryNewResult;
    }

    /**
     * Sets the value of the getQueryNewResult property.
     * 
     * @param value
     *     allowed object is
     *     {@link GetQueryNewResponse.GetQueryNewResult }
     *     
     */
    public void setGetQueryNewResult(GetQueryNewResponse.GetQueryNewResult value) {
        this.getQueryNewResult = value;
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element ref="{http://www.w3.org/2001/XMLSchema}schema"/>
     *         &lt;any/>
     *       &lt;/sequence>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "schema",
        "any"
    })
    public static class GetQueryNewResult {

        @XmlElement(namespace = "http://www.w3.org/2001/XMLSchema", required = true)
        protected Schema schema;
        @XmlAnyElement(lax = true)
        protected Object any;

        /**
         * Gets the value of the schema property.
         * 
         * @return
         *     possible object is
         *     {@link Schema }
         *     
         */
        public Schema getSchema() {
            return schema;
        }

        /**
         * Sets the value of the schema property.
         * 
         * @param value
         *     allowed object is
         *     {@link Schema }
         *     
         */
        public void setSchema(Schema value) {
            this.schema = value;
        }

        /**
         * Gets the value of the any property.
         * 
         * @return
         *     possible object is
         *     {@link Object }
         *     
         */
        public Object getAny() {
            return any;
        }

        /**
         * Sets the value of the any property.
         * 
         * @param value
         *     allowed object is
         *     {@link Object }
         *     
         */
        public void setAny(Object value) {
            this.any = value;
        }

    }

}
package org.ritwik.client;

import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.soap.Node;

import org.tempuri.BACOnlineResponse;
import org.tempuri.BACOnlineResponse.BACOnlineResult;
import org.tempuri.BASCOnlineResponse;
import org.tempuri.BASCOnlineResponse.BASCOnlineResult;
import org.tempuri.DEAAppSearch;
import org.tempuri.DEAAppSearchResponse;
import org.tempuri.DEAAppSearchResponse.DEAAppSearchResult;
import org.tempuri.Deawebsvc;
import org.tempuri.DeawebsvcSoap;
import org.tempuri.GetIssueDate;
import org.tempuri.GetIssueDateResponse;
import org.tempuri.GetQueryResponse;
import org.tempuri.GetUserInfoResponse;
import org.tempuri.GetUserInfoResponse.GetUserInfoResult;
import org.tempuri.IsUserValidResponse;
import org.tempuri.ObjectFactory;
import org.w3c.dom.Element;

public class WsClient {

        /**
         * @param args
         * @throws JAXBException 
         */
        public static void main(String[] args)  {
            // TODO Auto-generated method stub

            Deawebsvc deaw=new Deawebsvc();
            DeawebsvcSoap impl=deaw.getDeawebsvcSoap();
            ObjectFactory of=new ObjectFactory();   
            DEAAppSearchResponse dsSearch=of.createDEAAppSearchResponse();
            dsSearch.setDEAAppSearchResult(impl.deaAppSearch("deatest@ritwik.com"," deavalidation", "dea", "bac", "basc", "expirationFrom", "expirationTo", "company", "zip", "state", "pi", "maxRows"));
            System.out.println(dsSearch.getDEAAppSearchResult().toString());
            System.out.println(dsSearch.getDEAAppSearchResult().getAny());



        }

    }
JAXBContext jaxbContext = JAXBContext.newInstance(NewDataSet.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Node node = (Node) dsSearch.getDEAAppSearchResult().getAny();
NewDataSet dataset = (NewDataSet)unmarshaller.unmarshal(node.getFirstChild());