从jaxb资源

时间:2018-02-17 10:25:08

标签: java jaxb

您好我正在尝试导入一些使用jaxb生成的类,但是当我运行该项目时,它会显示:

  

:错误:包cursos不存在
  import cursos.CursoType;

我使用JAXB Binding创建新类,但是当我从主类调用这些类时,它向我显示错误“包cursos不存在”.ç

package tarea;

import cursos.CursoType;
import cursos.DatosProf;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;    

public class Tarea {

public static void main(String[] args) {

    try {

        JAXBContext jaxbContext = JAXBContext.newInstance("cursos");
        Unmarshaller un = jaxbContext.createUnmarshaller();
        JAXBElement elemento = (JAXBElement) un.unmarshal(new FileInputStream("C:\\clase.xml"));

        CursoType curso = (CursoType) elemento.getValue();

        DatosProf profesor = curso.getProfesor();

        profesor.setNombre("PPPPPPPPPPPP");

        Marshaller mar = jaxbContext.createMarshaller();
        mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

        mar.marshal(elemento, System.out);
    } catch (JAXBException ex) {

    } catch (FileNotFoundException ex) {

    }
}

}

包结构:

Package structure

我添加了xml示例和XSD架构

XML示例

<curso>
<profesor>
    <nombre>Pedro</nombre>
    <asignatura>Ciencias</asignatura>
    <especialidad>Lengua</especialidad>
    <curso>1</curso>
    <modalidad>2</modalidad>
</profesor>
<alumnos>
    <alumno>
        <nombreAlumno>Jun</nombreAlumno>
        <edad>15</edad>
        <direccion>Albacete</direccion>
        <telefono>912256885</telefono>
    </alumno>
    <alumno>
        <nombreAlumno>Luis</nombreAlumno>
        <edad>16</edad>
        <direccion>Toledo</direccion>
        <telefono>925885547</telefono>
    </alumno>
</alumnos>

XSD架构

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

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
 <xsd:element name="curso" type="CursoType"/>

 <xsd:element name="comentario" type="xsd:string"/>

 <xsd:complexType name="CursoType">
  <xsd:sequence>
   <xsd:element name="profesor" type="DatosProf"/>
   <xsd:element ref="comentario" minOccurs="0"/>
   <xsd:element name="alumnos" type="alumnos"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="DatosProf">
  <xsd:sequence>
   <xsd:element name="nombre" type="xsd:string"/>
   <xsd:element name="asignatura" type="xsd:string"/>
   <xsd:element name="especialidad" type="xsd:string"/>
   <xsd:element name="curso" type="xsd:string"/>
   <xsd:element name="modalidad" type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="pais" type="xsd:NMTOKEN" fixed="Espana"/>
 </xsd:complexType>

 <xsd:complexType name="alumnos">
  <xsd:sequence>
   <xsd:element name="alumno" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
     <xsd:sequence>
      <xsd:element name="nombreAlumno" type="xsd:string"/>
      <xsd:element name="edad">
       <xsd:simpleType>
        <xsd:restriction base="xsd:positiveInteger">
         <xsd:maxExclusive value="100"/>
        </xsd:restriction>
       </xsd:simpleType>
      </xsd:element>
      <xsd:element name="direccion" type="xsd:string"/>
      <xsd:element ref="comentario" minOccurs="0"/>
      <xsd:element name="telefono" type="xsd:positiveInteger"/>
     </xsd:sequence>
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

0 个答案:

没有答案