JAXB Unmarshal奇怪的行为

时间:2016-02-01 15:00:03

标签: java xml jaxb annotations

道歉,如果这个问题似乎重复了,但我在这个背景下已经仔细研究了数百个论坛和帖子,而且我似乎确实有一些事情显然是正确的,并且符合所有关于这个主题的JSR和其他评论/帖子。

但在我打破笔记本电脑之前,我想看看其他眼睛是否可以提供帮助。

这是我的XML的DTD

<!ELEMENT prodcat (product*)>
<!ELEMENT product (name, description?, composition+, commercial?,  prodMeta*)>
<!ELEMENT name EMPTY>
<!ELEMENT description EMPTY>
<!ELEMENT composition ((atomicProduct|resource)+, composition*)>
<!ELEMENT commercial EMPTY>
<!ELEMENT prodMeta EMPTY>
<!ELEMENT atomicProduct EMPTY>
<!ELEMENT resource EMPTY>

<!ATTLIST product
    id ID #REQUIRED
    discoverable (true|false) #REQUIRED
>

<!ATTLIST composition
    type (include|mutex) #REQUIRED
>

<!ATTLIST commercial
    isoCurrencyCode CDATA #REQUIRED
>

<!ATTLIST prodMeta
    name CDATA #REQUIRED
    value CDATA #REQUIRED
>

<!ATTLIST atomicProduct
    id IDREF #REQUIRED
>

<!ATTLIST resource
    id CDATA #REQUIRED
>

这是我的XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE prodcat SYSTEM "prodcat.dtd">

<prodcat>
    <product id="PRD_14" discoverable="true">
        <name>UniFi Advance 30Mbps</name>
        <composition type="include">
            <atomicProduct id="PRD_9"/>
            <atomicProduct id="PRD_11"/>
            <atomicProduct id="PRD_13"/>
        </composition>
        <commercial isoCurrencyCode="MYR"/>
        <prodMeta name="Category" value="Bundle" />
    </product>

    <product id="PRD_9" discoverable="true">
        <name>HyppTV Residential</name>
        <composition type="include">
            <atomicProduct id="PRD_5" />
            <composition type="mutex">
                <atomicProduct id="PRD_6" />
                <atomicProduct id="PRD_7" />
                <atomicProduct id="PRD_8" />
            </composition>
        </composition>
    </product>
</prodcat>

pojos分别用@XmlAttribute@XmlElement注释。但出于某种原因,只有commercialprodMeta单独拒绝解析...没有错误,没有例外,没有抱怨......只是不会被触动!这很奇怪。

真的需要帮助。

1 个答案:

答案 0 :(得分:1)

我终于设法解决了这个谜。 XML和Pojos都是正确的。只是在部署中,已安装了较旧版本的DTD,但未定义商业元素和prodMeta元素。由于没有错误,异常或任何中断的迹象,因此很难进行故障排除