преобразовать Java-объект в мыльный заголовок - PullRequest
1 голос
/ 01 мая 2019

я записываю конвертер java-объекта в мыльный заголовок, но вывод не имеет префикса 'ns'

Мой вывод XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AuthHeader>
   <UserName>sample</UserName>
   <Password>sample_password</Password>
</AuthHeader>

но мыльный заголовок такой :(имеет 'ns' !!)

 <ns:AuthHeader>
    <ns:UserName>sample</ns:UserName>
    <ns:Password>sample_password</ns:Password>
 </ns:AuthHeader>

мой код такой:

    AuthHeader authHeader = new AuthHeader();

    authHeader.setUserName(endDureBean.getUserName());
    authHeader.setPassword(endDureBean.getPassword());

        //Create JAXB Context
        JAXBContext jaxbContext = JAXBContext.newInstance(AuthHeader.class);
        //Create Marshaller
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
        //Required formatting??
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        //Print XML String to Console
        StringWriter sw = new StringWriter();
        //Write XML to StringWriter
        jaxbMarshaller.marshal(authHeader, sw);
        //Verify XML Content
        String xmlContent = sw.toString();

1 Ответ

0 голосов
/ 08 мая 2019

я нашел решение, которое мы должны указать 'ns' в классе AuthHeader с помощью @XmlElement:

@XmlElement(name = "UserName", namespace = "http:/10.10.10.10:8080/")
protected String userName;
@XmlElement(name = "Password", namespace = "http:/10.10.10.10:8080/")
protected String password;

XML-файл выглядит так:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsample.org/soap/envelope/" 
xmlns:ns="http:/10.10.10.10:8080/">
   <soapenv:Header>
      <ns:AuthHeader>
         <!--Optional:-->
         <ns:UserName>sample-username</ns:UserName>
         <!--Optional:-->
         <ns:Password>sample-password</ns:Password>
      </ns:AuthHeader>
   </soapenv:Header>
...