【问题标题】:How to Instantiate and store values in List<JAXBElement<?>>如何在 List<JAXBElement<?>> 中实例化和存储值
【发布时间】:2019-08-19 16:15:28
【问题描述】:

我已经从 Wsdl 生成了 java 客户端。我被困在下面的代码中,我必须在下面的List&lt;JAXBElement&lt;?&gt;&gt; 中设置一些设置器值

public class SampleVerificationDomain
       extends BaseDomain
    {

       protected List<JAXBElement<?>> rest;

       /**
         * Gets the rest of the content model. 
         *  
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the rest property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getRest().add(newItem);
         * </pre>
         *  
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link JAXBElement }{@code <}{@link String }{@code >}
         * {@link JAXBElement }{@code <}{@link String }{@code >}
         * {@link JAXBElement }{@code <}{@link String }{@code >}
         * {@link JAXBElement }{@code <}{@link String }{@code >}
         * {@link JAXBElement }{@code <}{@link DummyVerification }{@code >}
         * {@link JAXBElement }{@code <}{@link String }{@code >}
         *
         */
        public List<JAXBElement<?>> getRest() {
            if (rest == null) {
                rest = new ArrayList<JAXBElement<?>>();
            }
            return this.rest;
        }

如果是List&lt;Class&gt;List&lt;String&gt; 等,我知道如何存储值, 但是如何将值存储在 &lt;?&gt; 类型的 JAXBElement 中,然后将其存储在 List 中?

更新:

借助这个 [https://stackoverflow.com/a/19548424/9811170],我找到了 ObjectFacotry 类,其中包含需要设置的值的创建函数。

JAXBElement<?> jasbElem = null;     
jasbElem =  objectFactory.createSampleVerificationDomainCNIC("2392923");
jasbElem =  objectFactory.createSampleVerificationDomainMSISDN("xxxxxxx");
jasbElem =  objectFactory.createSampleVerificationDomainMsg("some message");
jasbElem =  objectFactory.createSampleVerificationDomainUserName("apiusername");
jasbElem =  objectFactory.createSampleVerificationDomainPassword("testpass");


SampleTestVerificationDomain.getRest().add(jasbElem);

但是上面的代码只设置了 JAXBElement 中的最后一个值。 有关如何将所有值存储在 JAXBElement 中的任何帮助?

【问题讨论】:

    标签: java list soap jaxbelement


    【解决方案1】:

    你能检查一下吗:https://dzone.com/articles/jaxb-and-root-elements

    JAXBContext jc = JAXBContext.newInstance("org.example.customer");
        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    
        // Create Domain Objects
        AddressType billingAddress = new AddressType();
        billingAddress.setStreet("1 Any Street");
        Customer customer = new Customer();
        customer.setBillingAddress(billingAddress);
    
        // Marshal Customer
        marshaller.marshal(customer, System.out);
    
        // Marshal Billing Address
        ObjectFactory objectFactory = new ObjectFactory();
        JAXBElement<AddressType> je =  objectFactory.createBillingAddress(billingAddress);
        marshaller.marshal(je, System.out);
    

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多