首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAXB名称空间和前缀

JAXB名称空间和前缀
EN

Stack Overflow用户
提问于 2016-02-26 10:25:02
回答 1查看 674关注 0票数 1

在解组下列XML时,我遇到了问题:

代码语言:javascript
复制
<p456:doServiceResponse xmlns:p456="http://www.sign.services.org/IServicios/">
    <respuesta>0</respuesta>
    <respuesta>Operacion correcta</respuesta>
    <respuesta>respuesta</respuesta>
</p456:doServiceResponse>

我有以下课程:

代码语言:javascript
复制
package com.ws.client;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "respuesta" })
@XmlRootElement(name = "doServiceResponse")
public class DoServiceResponse {

    @XmlElement(required = true)
    protected List<String> respuesta;

    public List<String> getRespuesta() {
        if (respuesta == null) {
            respuesta = new ArrayList<String>();
        }
        return this.respuesta;
    }

}

和包-信息文件:

代码语言:javascript
复制
@XmlSchema(
    namespace = "http://www.sign.services.org/IServicios/",
    elementFormDefault = XmlNsForm.QUALIFIED)
package com.ws.client;

import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

该XML的解组不会失败,但respuesta字段是null。如果我将p456作为前缀添加到所有<respuesta>节点,那么它可以工作。问题是,我不能这样做,因为这是我从WS调用得到的答案,是不可修改的。

此外,为了不破坏任何内容,我将向WS发送“请求”,到目前为止,WS运行良好:

代码语言:javascript
复制
<doServiceRequest xmlns="http://www.sign.services.org/IServicios/">
    <aplicacion>app</aplicacion>
    <params>param1</params>
    <params>param2</params>
</doServiceRequest>

而豆子:

代码语言:javascript
复制
package com.ws.client;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "aplicacion", "params" })
@XmlRootElement(name = "doServiceRequest")
public class DoServiceRequest {

    @XmlElement(required = true)
    protected String aplicacion;
    @XmlElement(required = true)
    protected List<String> params;

    public String getAplicacion() {
        return aplicacion;
    }

    public void setAplicacion(String value) {
        this.aplicacion = value;
    }

    public List<String> getParams() {
        if (params == null) {
            params = new ArrayList<String>();
        }
        return this.params;
    }

}

请有人告诉我如何配置注释,这样我就可以在不修改XML和不接触JAXB解组器的情况下解除XML的存储。那有可能吗?

EN

Stack Overflow用户

回答已采纳

发布于 2016-02-26 14:07:20

您只需将命名空间参数添加到@XmlElement注释中:

代码语言:javascript
复制
@XmlElement(required = true, namespace="")
protected List<String> respuesta;

我认为这是可行的(未经测试)。

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

https://stackoverflow.com/questions/35649180

复制
相关文章

相似问题

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