package mysample.src.generated;
import java.io.File;
import javax.xml.bind.*;
public class TestUnmarshal { public static void main(String[] args) {

try{
//解组部分
      
JAXBContext jc = JAXBContext.newInstance("mysample.src.generated");
Unmarshaller u = jc.createUnmarshaller();
File f = new File("Course.xml");
Clases Cla=(Clases)u.unmarshal(f);

//输出部分
System.out.println("------------------------------------------");
System.out.println("------------------------------------------");
    ClasType clas1=Cla.getClas().get(0);
    System.out.println("班级名:"+clas1.getClaName());
System.out.println("班级号"+clas1.getClaId());
System.out.println("班级课程:"+clas1.getCourse());
System.out.println("班级人数:"+clas1.getNumOfPeople());
ClasType clas2=Cla.getClas().get(1);
    System.out.println("班级名:"+clas2.getClaName());
System.out.println("班级号"+clas2.getClaId());
System.out.println("班级课程:"+clas2.getCourse());
System.out.println("班级人数:"+clas2.getNumOfPeople());
ClasType clas3=Cla.getClas().get(2);
    System.out.println("班级名:"+clas3.getClaName());
System.out.println("班级号"+clas3.getClaId());
System.out.println("班级课程:"+clas3.getCourse());
System.out.println("班级人数:"+clas3.getNumOfPeople());
}
catch(JAXBException e){e.printStackTrace();}
catch(Exception e){e.printStackTrace();}
   } 
}
出现的异常:javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Classes"). Expected elements are (none)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1049)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169)
at huangbin.src.generated.TestUnmarshal.main(TestUnmarshal.java:14)

解决方案 »

  1.   

    应该是你的XML和xsd之间验证没通过
    能贴上来吗
      

  2.   

    很简单的一个xsd,xml文档:<Classes>
          <Class>
            <!--软件测试-->
            <Cla_name>Sw Testing</Cla_name >
            <Cla_id>071</Cla_id >
            <num_of_people>39</num_of_people >
            <courses>
              <course>Database Principles</course>
              <course>Algorithm and Design</course>
              <course>Java and xml data binding</course>
              <course>The OS and network</course>
              <course>TSP</course>
            </courses >
          </Class>
          <Class>
            <!--网络通信-->
            <Cla_name>Network Communication</Cla_name >
            <Cla_id>072</Cla_id >
            <num_of_people>60</num_of_people >
            <courses>
              <course>Database Principles</course>
              <course>Computer cryptography</course>
              <course>Network Security</course >
              <course>The OS and network</course >
              <course>Java Programming</course>
            </courses >
          </Class>
          <Class>
            <!--软件开发与设计-->
            <Cla_name>Sw Development and Design</Cla_name >
            <Cla_id>073</Cla_id >
            <num_of_people>60</num_of_people >
            <courses>
              <course>Database Principles</course>
              <course>Algorithm and Design</course>
              <course>Java and xml data binding</course>
              <course>The OS and network</course>
              <course>TSP</course>
            </courses >
          </Class>
      </Classes>
    xsd文档:<?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <!--课程-->
      <xs:simpleType name="CourseType">
        <xs:restriction base="xs:string" />
      </xs:simpleType>
      <!--班级-->
      <xs:complexType name="ClasType">
        <xs:sequence>
          <xs:element name="Cla_name" type="xs:string" />
          <xs:element name="Cla_id" type="xs:integer" />
          <xs:element name="Course" type="CourseType" />
          <xs:element name="num_of_people" type="xs:integer" />
        </xs:sequence>
      </xs:complexType>
    <xs:complexType name="Clases">
        <xs:sequence>
          <xs:element name="clas" type="ClasType" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
      

  3.   

     补充:找不到com.sun.xml.bind.v2.runtime.Unmarshaller.....源