안녕하세요. 학교 실험실에서 문제가 좀 있습니다. 본질적으로 XML 스키마를 작성하고 JAXB 컴파일러를 실행 한 다음 Java 클래스를 작성하여 직원 레코드를 직렬화해야했습니다. "employeeSchema.xsd"xml이 채워지지 않습니다. - JAXB를 사용합니다.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
jxb:version="2.0">
<xs:element name="employee" type="employeeType"/>
<xs:complexType name="jobListType">
<xs:sequence>
<xs:element name="job_id" type="xs:positiveInteger"/>
<xs:element name="job_title" type="xs:string"/>
<xs:element name="min_salary" type="xs:positiveInteger"/>
<xs:element name="max_salary" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="departmentType">
<xs:sequence>
<xs:element name="department_id" type="xs:positiveInteger"/>
<xs:element name="department_name" type="xs:string"/>
<xs:element name="manager_id" type="xs:positiveInteger"/>
<xs:element name="location_id" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="employeeType">
<xs:sequence>
<xs:element name="employee_id" type="xs:positiveInteger"/>
<xs:element name="first_name" type="xs:string"/>
<xs:element name="last_name" type="xs:string"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="phone_number" type="xs:string"/>
<xs:element name="hire_date" type="xs:date"/>
<xs:element name="job" type="jobListType"/>
<xs:element name="salary" type="xs:positiveInteger"/>
<xs:element name="commission_pct" type="xs:decimal"/>
<xs:element name="manager_id" type="xs:positiveInteger"/>
<xs:element name="department" type="departmentType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
라는 파일 그리고 나는 그것이 JAXB를 사용하여 준수하면, 나는 "employee.java"
package employeeSchema;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.xml.bind.*;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.math.*;
public class employee {
private ObjectFactory of;
private EmployeeType myEmployee;
public employee(){
of = new ObjectFactory();
myEmployee = of.createEmployeeType();
}
public void make(BigInteger empID, String firstName, String lastName, String email, String phoneNumber,
Date hireDate, JobListType jobID, BigInteger salary, BigDecimal commPct,
BigInteger managerID/*, DepartmentType departmentID*/){
try{
GregorianCalendar gcal = new GregorianCalendar();
gcal.setTime(hireDate);
XMLGregorianCalendar xgcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
EmployeeType emp = of.createEmployeeType();
emp.setEmployeeId(empID);
emp.setFirstName(firstName);
emp.setLastName(lastName);
emp.setEmail(email);
emp.setPhoneNumber(phoneNumber);
emp.setHireDate(xgcal);
emp.setJob(jobID);
emp.setSalary(salary);
emp.setCommissionPct(commPct);
emp.setManagerId(managerID);
}
catch (Exception e){
}
}
public void marshal() {
try {
JAXBElement<EmployeeType> em =
of.createEmployee(myEmployee);
JAXBContext jc = JAXBContext.newInstance("employeeSchema");
Marshaller m = jc.createMarshaller();
m.marshal(em, System.out);
} catch(JAXBException jbe){
// ...
}
}
public static void main(String args[])
{
int employeeID = 123456;
BigInteger empID = BigInteger.valueOf(employeeID);
String firstName = "Ehssan";
String lastName = "Tehrani";
String email = "[email protected]";
Date hireDate = null;
try{
DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
hireDate=df.parse("20/02/2014");
}
catch (Exception e){
}
String phoneNumber = "647-588-3774";
JobListType jList = new JobListType();
int theJobId = 12345;
BigInteger jID = BigInteger.valueOf(theJobId);
jList.setJobId(jID);
jList.setJobTitle("Java Developer");
int theMinSal = 50000;
BigInteger jMinSal = BigInteger.valueOf(theMinSal);
jList.setMinSalary(jMinSal);
int theMaxSal = 150000;
BigInteger jMaxSal = BigInteger.valueOf(theMaxSal);
jList.setMinSalary(jMaxSal);
int theSalary = 90000;
BigInteger salary = BigInteger.valueOf(theSalary);
BigDecimal commPct = new BigDecimal(5.0);
int theManagerID = 12345;
BigInteger managerID = BigInteger.valueOf(theManagerID);
//DepartmentType departmentID
//setDepartmentID
employee myEmp = new employee();
myEmp.make(empID, firstName, lastName, email, phoneNumber, hireDate, jList, salary, commPct, managerID);
myEmp.marshal();
}
}
이라는 클래스를 생성 : 그래서 여기
는 내가 지금까지 무엇을 가지고 나는 employee.java을 실행할 때
는하지만, 내 출력은 다음과 같습니다 :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><employee/>
을하지만 목적은 표시하는 것입니다 내가 본부에서 정의한 직원. 모든 종류의 조언이나 도움이 크게 감사하겠습니다.
대단히 감사합니다.
건배
유 사용한 적이 XSD에서 Java 클래스를 생성하는 XJC 명령? – Naren
@Naren : XSD를 작성한 후에 예 jxc -p employeeSchema employeeSchema.xsd ... OjbectFactory 및 관련 파일을 작성하여 작성했습니다. –