Пространство имен JAXB для каждого тега xml - PullRequest
0 голосов
/ 18 мая 2018

Я использую jaxb для генерации XML-запроса.Ниже приведены все детали кода.Я также попробовал информацию о пакете, но у меня это не сработало.Как будто я хочу добавить пространство имен для каждого тега XML объекта.

Надеюсь, вы, ребята, поняли мою точку зрения.Я делаю что-то неправильно или чего-то не хватает?или это возможно в JAXB Java.

Обязательный вывод

<ns0:CustomizedBundlesSubscriptionPortalResultMsg xmlns:ns0="http://www.herman.com/schemas/SubscriptionCustomizedBundles.xsd">
 <ns1:ResultHeader xmlns:ns1="http://www.herman.pk/eil/common_service/types/common_types/v1">
    <ns1:RequestID>1</ns1:RequestID>
    <ns1:Timestamp>20180518160833</ns1:Timestamp>
 </ns1:ResultHeader>
 <ns0:CustomizedBundlesResponseMessage>
    <ns0:AcctChgRec>
       <ns1:AccountType xmlns:ns1="http://www.herman.com/bme/cbsinterface/common">2000</ns1:AccountType>
       <ns1:BalanceId xmlns:ns1="http://www.herman.com/bme/cbsinterface/common">999000000016059109</ns1:BalanceId>
    </ns0:AcctChgRec>
 </ns0:CustomizedBundlesResponseMessage>
</ns0:CustomizedBundlesSubscriptionPortalResultMsg>

Вывод Im Getting

<ns0:CustomizedBundlesSubscriptionPortalResultMsg xmlns:ns1="http://www.herman.pk/eil/common_service/types/common_types/v1" xmlns:ns0="http://www.herman.com/schemas/SubscriptionCustomizedBundles.xsd" xmlns:ns3="http://www.herman.com/bme/cbsinterface/common">
    <ns1:ResultHeader>
        <ns1:RequestID>1</ns1:RequestID>
        <ns1:Timestamp>20180518160833</ns1:Timestamp>
    </ns1:ResultHeader>
    <ns0:CustomizedBundlesResponseMessage>
        <ns0:AcctChgRec>
            <ns3:AccountType>2000</ns3:AccountType>
            <ns3:BalanceId>999000000016059109</ns3:BalanceId>
        </ns0:AcctChgRec>
    </ns0:CustomizedBundlesResponseMessage>
</ns0:CustomizedBundlesSubscriptionPortalResultMsg>

Ниже приведен мой класс Java-объекта JAXB-родителя

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "resultHeader",
    "customizedBundlesResponseMessage"
})
@XmlRootElement(name = "CustomizedBundlesSubscriptionPortalResultMsg")
public class CustomizedBundlesSubscriptionPortalResultMsg {

    @XmlElement(name = "ResultHeader", namespace = "http://www.herman.pk/eil/common_service/types/common_types/v1")
    protected ResultHeaderType resultHeader;
    @XmlElement(name = "CustomizedBundlesResponseMessage")
    protected CustomizedBundlesResponseMessage customizedBundlesResponseMessage;
}

Ниже приведен мой внутренний класс Java-объекта JAXB

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "acctChgRec"
})
@XmlRootElement(name = "CustomizedBundlesResponseMessage")
public class CustomizedBundlesResponseMessage {

    @XmlElement(name = "AcctChgRec")
    protected List<AcctChgRecType> acctChgRec;
}

Ниже приведен мой класс объектов AcctChgRecType JAXB

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AcctChgRecType", propOrder = {

})
public class AcctChgRecType {

    @XmlElement(name = "AccountType", required = true, nillable = true)
    protected String accountType;
    @XmlElement(name = "BalanceId", required = true, type = Long.class, nillable = true)
}

1 Ответ

0 голосов
/ 18 мая 2018

Я хотел бы отослать вас к следующему ответу @MichaelKay:

https://stackoverflow.com/a/50300327/303810

Это не тот же вопрос, но тот жеответ:

В приложениях XML принцип должен быть следующим:

(a) Получающие приложения не должны заботиться о незначительных лексических деталях того, как пишется XML.(Лучший способ добиться этого - использовать респектабельный синтаксический анализатор XML для чтения XML.)

(b) При написании приложений должно быть свободно использовать любые лексические соглашения, которые они сочтут удобными.(Это означает, что вы можете использовать любую респектабельную библиотеку сериализации для написания XML.)

В принципе, вам все равно.Если вы это сделаете, то с обработкой XML что-то серьезно не так.Не должно иметь значения, как объявляются пространства имен.Зачем это нужно?

Чтобы ответить на ваш вопрос, это невозможно со стандартным JAXB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...