如何解决无法封送类型“ java.lang.String”作为元素,因为它缺少@XmlRootElement批注

时间:2019-05-08 20:54:57

标签: java soap jaxb

当收到以下请求对象时,我收到错误“ com.sun.istack.internal.SAXException2:无法将类型“ java.lang.String”作为元素编组,因为它缺少@XmlRootElement批注”编组的输入。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns:sampleRequest xmlns:ns="http://samplenamespace.com/x">
            <ID>7cbb07d7-ca09-4f5b-b441-88f43eee9546</ID>
            <item>
                <num>1</num>
                <details>
                    <detailId>22</detailId>
                </details>
                <details>
                    <detailId>22</detailId>
                </details>                                                                        
            </item>
        </ns:sampleRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我为大多数没有@XmlRootElement注释的元素(ID,num,detailId)的大多数解决方案中的说明创建了JAXbElement(如下)。但这仍然给我同样的错误。

private final static QName _ID_QNAME = new QName("", "ID");
@XmlElementDecl(namespace = "", name = "ID")
public JAXBElement<String> createtransactionID(String value)
{
    return new JAXBElement<String>(_ID_QNAME , String.class, null, value);
}    

但是,下面的请求没有问题(即使那不是我想要发送的请求)。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns:sampleRequest xmlns:ns="http://samplenamespace.com/x">
            <ns:sampleRequestType>
                <ns:sampleRequest xmlns:ns="http://samplenamespace.com/x">
                    <ID>7cbb07d7-ca09-4f5b-b441-88f43eee9546</ID>
                    <item>
                        <num>1</num>
                        <details>
                            <detailId>22</detailId>
                        </details>
                        <details>
                            <detailId>22</detailId>
                        </details>                                                                        
                    </item>
                </ns:sampleRequest>
            </ns:sampleRequestType>
        </ns:sampleRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

有人可以检查一下,让我知道我在做什么错吗?

0 个答案:

没有答案