मैंने निम्नलिखित xsd स्कीमा से जेएक्सबी कक्षाएं उत्पन्न की हैं:

    <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="MeetUpData">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="SessionData">
                    <xs:complexType>
                        <xs:attribute name="Date" type="xs:string" use="required" />
                        <xs:attribute name="Quantity" type="xs:int" use="required" />
                        <xs:attribute name="Theme" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="Name" type="xs:string" use="required" />
            <xs:attribute name="Location" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
</xs:schema>

अब मैं निम्नलिखित XML दस्तावेज़ को अनमर्शल करने का प्रयास कर रहा हूँ:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MeetUpData>
    <location>3</location>
    <name>2</name>
    <sessionsData>
        <date>345</date>
        <quantity>3</quantity>
        <theme>Windows</theme>
    </sessionsData>
    <sessionsData>
        <date>3</date>
        <quantity>7</quantity>
        <theme>9</theme>
    </sessionsData>
</MeetUpData>

कोड के निम्नलिखित भाग द्वारा:

JAXBContext jc = JAXBContext.newInstance(MeetUp.class);
            Unmarshaller ums = jc.createUnmarshaller();
            meetUpData = (MeetUpData) ums.unmarshal(new FileInputStream("src\\com\\bases\\java\\InitialXML.xml"));
            System.out.println("Info: " + meetUpData.toString());

लेकिन मुझे त्रुटियों का एक गुच्छा मिलता है:

javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"MeetUpData"). Expected elements are (none)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:726)
    ....

समस्या क्या है?

0
eshkere111222333 23 अक्टूबर 2017, 03:39

2 जवाब

सबसे बढ़िया उत्तर

मुझे नहीं पता कि आपकी जावा कक्षाएं कैसी दिखती हैं, लेकिन त्रुटि संदेश से आपने रूट क्लास को @XMLRootElement के साथ एनोटेट नहीं किया।

मैंने मीटअपडाटा क्लास का उपयोग करके जेएक्सबी की तात्कालिकता बदल दी है, और इसे @XMLRootElement के साथ एनोटेट कर दिया है।

यहाँ कार्यात्मक स्रोत हैं

MeetUpData.class:

import java.io.Serializable;
import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class MeetUpData implements Serializable {

    private static final long serialVersionUID = 1L;
    String location;
    String name;
    List<SessionData> sessionsData;

    public MeetUpData() {
        super();
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<SessionData> getSessionsData() {
        return sessionsData;
    }

    public void setSessionsData(List<SessionData> sessionsData) {
        this.sessionsData = sessionsData;
    }

    @Override
    public String toString() {
        return "MeetUpData [location=" + location + ", name=" + name + ", sessionData=" + sessionsData + "]";
    }

}

अनमार्शल करने के लिए कोड:

JAXBContext jc = JAXBContext.newInstance(MeetUpData.class);
Unmarshaller ums = jc.createUnmarshaller();
MeetUpData meetUpData = (MeetUpData) ums.unmarshal(new FileInputStream(
               "src\\com\\bases\\java\\InitialXML.xml"));
System.out.println("Info: " + meetUpData.toString());

इसके अलावा, आपको अपने एक्सएमएल में "मीटअपडाटा" टैग को लोअर केस 'एम' से शुरू करने के लिए बदलना होगा, जैसे:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<meetUpData>
    <location>3</location>
    <name>2</name>
    <sessionsData>
        <date>345</date>
        <quantity>3</quantity>
        <theme>Windows</theme>
    </sessionsData>
    <sessionsData>
        <date>3</date>
        <quantity>7</quantity>
        <theme>9</theme>
    </sessionsData>
</meetUpData>

कृपया अपनी कक्षाएं प्रदान करें यदि यह आपके लिए काम नहीं करता है।

0
Alessandro Hoss 23 अक्टूबर 2017, 17:42

केवल अंतिम दो पंक्तियों का प्रयास करें:

meetUpData = (MeetUpData) ums.unmarshal(new FileInputStream("src\\com\\bases\\java\\InitialXML.xml"));
        System.out.println("Info: " + meetUpData.toString());
0
David Brossard 23 अक्टूबर 2017, 16:51