jaxb 当 xsi:nil=true 如果任何子元素存在它仍然显示

2024-01-07

我有以下 xml 输出,当父元素具有属性 xsi:nil=true 即使子元素为 nillable=true 时,我们如何隐藏子元素 (endDate)?

//XML输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<snapshots xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:ns3="ws.mycompany.com"; mask="PAC">
    <Offers>
        <Offer xsi:type="wsMarketingOfferOP" entityId="1234" xsi:nil="true">
            <endDate xsi:nil="true"/>
        </Offer>
    </Offers>
</snapshots>

// 快照类

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = { "OffersElement"})
    @XmlRootElement(name = "snapshots")
    public class Snapshots<T extends Offer>
    {

        @XmlElement(name = "Offers")
        private OffersElement<T> OffersElement;


        public OffersElement<T> getOffersElement() {
            return offersElement;
        }

        public void setOffersElement(OffersElement<T> offersElement) {
            this.offersElement = offersElement;
        }
    }

// OffersElement 类

       @XmlAccessorType(XmlAccessType.NONE)
       @XmlRootElement(name = "Offer")

       public class OffersElement<T> {

        @XmlElementRef(name="Offer")
        List<JAXBElement<T>> listOffers;

        public List<JAXBElement<T>> getListOffers() {
            return listOffers;
        }

        public void setListMarketOffers(List<JAXBElement<T>> listOffers) {
            this.listOffers = listOffers;
        }
     }

//WSOffer 类,其中报价正在编组,并且结束日期 nillable 设置为 true,以便它将出现在 null 的位置。

            @XmlRootElement(name = "Offer")
    @XmlType(name = "", propOrder = { "endDate" })
    @XmlAccessorType(XmlAccessType.FIELD)
    public class WSOffer
    {
        @XmlElement(nillable = true)
        protected WSOffer.EndDate endDate;

        public WSOffer.EndDate getEndDate() {
            return endDate;
        }

        public void setEndDate(WSOffer.EndDate value) {
            this.endDate = value;
        }

        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "", propOrder = { "value" })
        public static class EndDate
        {
            @XmlValue
            protected Date value;

            public Date getValue() {
                return value;
            }

            public void setValue(Date value) {
                this.value = value;
            }
        }
       }

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jaxb 当 xsi:nil=true 如果任何子元素存在它仍然显示 的相关文章

随机推荐