簡體   English   中英

Java在Netbeans中解組復雜類型

[英]java unmarshalling complex types in Netbeans

我試圖在Java Web應用程序中使用NetBeans 8.2從具有以下架構文件的文件中解編XML數據。

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://xml.netbeans.org/schema/xSchema"
            xmlns:tns="http://xml.netbeans.org/schema/xSchema"
            elementFormDefault="qualified">

        <xsd::complexType name="xItem">

                <xsd:sequence>
                    <xsd:element name="item1" type="xsd:string"/>
                    <xsd:element name="item2" type="xsd:string"/>
                    <xsd:element name="item3" type="xsd:int"/>

                    <xsd:element name="x-price">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name = "item4" type="xsd:string"/>
                                <xsd:element name = item5" type = "xsd:float"/>
                                <xsd:element name = "item6" type="xsd:string"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>

                </xsd:sequence>

            </xsd:complexType>

            <xsd:element name = "xList">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="x_details" type="tns:xItem" minOccurs="0" maxOccurs="unbounded" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


</xsd:schema>

我使用NetBeans創建了XML文檔,並使用與Schema文件匹配的數據填充了XML文檔。 XML模式使用Jaxb綁定到Java Web Application。 我已經使用jaxbu方法創建了解組代碼,如下所示

   xList currentx = new xList();

    //UnMarshal data from XML to Object
    try {
        javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(currentx.getClass().getPackage().getName());
        javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
        currentx = (xList) unmarshaller.unmarshal(fileHandle); //NOI18N
    } catch (javax.xml.bind.JAXBException ex) {
        // XXXTODO Handle exception
        java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
    }

結果ArrayList currentx包含item1,item2和item 3的所有實例。但是,它似乎不包含item 4和5。“ fileHandle”是FILE對象,顯然指向正確的文件。 生成的文件包括xItem的類和x-price的嵌套的靜態類,但是每當我嘗試從嵌套的類中檢索數據時,我都會得到item4、5和6的空指針異常,但可以讀取項目1,2和3.取消編組功能似乎可以正常運行,沒有創建任何異常。 我是否使用正確的方法來解組所有數據,或者我缺少處理x價格的東西(第4、5和6項)? 怎么做的?

XLM第一個數據記錄和標頭:

<ns1:xList
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xmlns:ns1='http://xml.netbeans.org/schema/xSchema'
    xsi:schemaLocation='http://xml.netbeans.org/schema/xSchema xSchema1.xsd'>
    <ns1:x_details>
        <ns1:item1>AA</ns1:item1>
        <ns1:item2>AA</ns1:item2>
        <ns1:aitem3>212</ns1:item4>
        <ns1:x-price>
            <ns1:item4>GBP</ns1:item4>
            <ns1:item5>75.26</ns1:item5>
            <ns1:item6>04/12/2018</ns1:item6>
        </ns1:x-price>
    </ns1:x_details>

在示例架構中,您的架構似乎無效:

<xsd:element name = item5" type = "xsd:float"/>

並且應該是

<xsd:element name = "item5" type = "xsd:float"/>

如果您的真實數據丟失(您的XML),也很難提供幫助。 您可以添加完整的XML示例嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM