首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将xml-string解封为java对象。

无法将xml-string解封为java对象。
EN

Stack Overflow用户
提问于 2019-08-06 15:14:41
回答 1查看 216关注 0票数 0

将xml-string解封到java-object会产生以下错误:

javax.xml.bind.UnmarshalException:意外元素(uri:"",local:"AppServerResponse")。期望元素是{[http://www.coda.com/efinance/schemas/appserver](http://www.coda.com/efinance/schemas/appserver)}AppServerResponse

这是AppServerResponse Java类。

代码语言:javascript
复制
@XmlRootElement (name = "AppServerResponse", namespace = "http://www.coda.com/efinance/schemas/appserver")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AppServerResponse", namespace = "http://www.coda.com/efinance/schemas/appserver", propOrder = {
    "getEnvironment",
    "listUserCompanies",
    "softToHardDate"
})
public class AppServerResponse  extends ServiceResponse
{

    @XmlElement(name = "GetEnvironment", namespace = "http://www.coda.com/efinance/schemas/appserver")

    protected GetEnvironmentResponseVerb getEnvironment;
    @XmlElement(name = "ListUserCompanies", namespace = "http://www.coda.com/efinance/schemas/appserver")
    protected ListUserCompaniesResponseVerb listUserCompanies;
    @XmlElement(name = "SoftToHardDate", namespace = "http://www.coda.com/efinance/schemas/appserver")

    protected SoftToHardDateResponseVerb softToHardDate;

解封送处理功能和xml消息的代码被解除封送:

代码语言:javascript
复制
String strResponse = "<AppServerResponse uri=\"http://www.coda.com/efinance/schemas/appserver\" version=\"2.0\" >"
                                + "<GetEnvironment>"
                                    + "<Response status=\"success\">"
                                        + "<Environment>"
                                            + "<CmpCode>TEST</CmpCode>"
                                            + "<CapCode>INTERFACE</CapCode>"
                                            + "<HomeCurr>EUR</HomeCurr>"
                                            + "<DateOrder>1</DateOrder>"
                                            + "<DateDisplay>1</DateDisplay>"
                                            + "<DateSep>/</DateSep>"
                                            + "<HomeCurrDps>2</HomeCurrDps>"
                                            + "<HomeCurrSymbol>€</HomeCurrSymbol>"
                                            + "<HomeCurrSymbolPos>before</HomeCurrSymbolPos>"
                                            + "<HomeCurrLinkType>no_link</HomeCurrLinkType>"
                                            + "<HomeCurrParent>EURO</HomeCurrParent>"
                                            + "<CurrentPeriod>2018/4</CurrentPeriod>"
                                            + "<CmpTimeStamp>11</CmpTimeStamp>"
                                            + "<CapTimeStamp>3</CapTimeStamp>"
                                            + "<UsrTimeStamp>12</UsrTimeStamp>"
                                            + "<ServerVersion>14.000.0014</ServerVersion>"
                                        + "</Environment>"
                                    + "</Response>"
                                + "</GetEnvironment>"
                            + "</AppServerResponse>";
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            dbf.setNamespaceAware(false);
            DocumentBuilder db;

            db = dbf.newDocumentBuilder();

            Document docResponse = db.parse(new InputSource(new StringReader(strResponse)));

            writeXmlDocumentToXmlFile(docResponse);

            JAXBContext contextResponse = JAXBContext.newInstance(responseClass);
            Unmarshaller u = contextResponse.createUnmarshaller();

            returnValue = u.unmarshal(docResponse);
EN

回答 1

Stack Overflow用户

发布于 2019-08-06 16:43:28

JAXB注释指定您的元素位于http://www.coda.com/efinance/schemas/appserver名称空间中,但您的ressponse字符串中的元素实际上不在名称空间中。看起来,您打算通过

代码语言:javascript
复制
String strResponse = "<AppServerResponse uri=\"http://www.coda.com/efinance/schemas/appserver\"..."

但是uri属性并没有真正做到这一点。相反,您需要xmlns属性:

代码语言:javascript
复制
String strResponse = "<AppServerResponse xmlns=\"http://www.coda.com/efinance/schemas/appserver\"..."

注意xmlns属性名而不是uri

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57379152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档