您好我正在尝试导入一些使用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) {
}
}
}
包结构:
我添加了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>