您的位置:首页 > 其它

使用xmlbeans构造符合相应Schema格式的xml文件

2011-10-24 16:27 459 查看
接着上例的 automobile-policy.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="automobile-policy">  <xs:complexType>   <xs:sequence>
<xs:element name="insurance-date" type="xs:dateTime" />
<xs:element name="policyholder-information" type="policyholder-information"
minOccurs="1" />
<xs:element name="insured-vehicle" type="insured-vehicle"
minOccurs="1" />
<xs:element name="liability-coverage" type="liability-coverage"
minOccurs="1" />
<xs:element name="third-party-coverage" type="third-party-coverage" />
</xs:sequence>  </xs:complexType> </xs:element>
<xs:complexType name="policyholder-information">  <xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="social-security-number" type="xs:string" />
<xs:element name="address" type="xs:string" />  </xs:sequence>
</xs:complexType> <xs:complexType name="insured-vehicle">  <xs:sequence>
<xs:element name="year-of-manufacture" type="xs:string" />
<xs:element name="make" type="xs:string" />
<xs:element name="model" type="xs:string" />
<xs:element name="price" type="xs:double" />  </xs:sequence>
</xs:complexType> <xs:complexType name="liability-coverage">  <xs:sequence>
<xs:element name="coverage-limit" type="xs:double" />
<xs:element name="coverage-premium" type="xs:double" />  </xs:sequence>
</xs:complexType> <xs:complexType name="third-party-coverage">  <xs:sequence>
<xs:element name="coverage-limit" type="xs:double" />
<xs:element name="coverage-premium" type="xs:double" />  </xs:sequence>
</xs:complexType></xs:schema>


确保该schema文件已经使用scomp编译过,并将生成的jar包导入到了工程中,且工程中加入了xmlbeans的jar文件

新建源文件:

import java.io.File;
import java.util.Calendar;
import java.util.Date;
import org.apache.xmlbeans.XmlOptions;
import noNamespace.*;
public class createXml {
public static void main(String args[]){
File out=new File("src/out.xml");
Calendar date=Calendar.getInstance();
date.setTime(new Date());

AutomobilePolicyDocument autoPolicyDoc=AutomobilePolicyDocument.Factory.newInstance();
autoPolicyDoc.addNewAutomobilePolicy();
AutomobilePolicyDocument.AutomobilePolicy autoPolicyElement=autoPolicyDoc.getAutomobilePolicy();

autoPolicyElement.setInsuranceDate(date);

autoPolicyElement.addNewInsuredVehicle();
InsuredVehicle insuredVehile=InsuredVehicle.Factory.newInstance();
insuredVehile.setYearOfManufacture("2011");
insuredVehile.setMake("XUPT");
insuredVehile.setModel("Optra");
insuredVehile.setPrice(1234);
autoPolicyElement.setInsuredVehicle(insuredVehile);

autoPolicyElement.addNewLiabilityCoverage();
LiabilityCoverage liabilityCoverage=LiabilityCoverage.Factory.newInstance();
liabilityCoverage.setCoverageLimit(123456);
liabilityCoverage.setCoveragePremium(654321);
autoPolicyElement.setLiabilityCoverage(liabilityCoverage);

autoPolicyElement.addNewPolicyholderInformation();
PolicyholderInformation policyholderInformation=PolicyholderInformation.Factory.newInstance();
policyholderInformation.setName("Adam");
policyholderInformation.setSocialSecurityNumber("1GBL7D1G3GV100770");
policyholderInformation.setAddress("Bell's Tower");
autoPolicyElement.setPolicyholderInformation(policyholderInformation);

autoPolicyElement.addNewThirdPartyCoverage();
ThirdPartyCoverage thirdPartyCoverage=ThirdPartyCoverage.Factory.newInstance();
thirdPartyCoverage.setCoverageLimit(2222);
thirdPartyCoverage.setCoveragePremium(3333);
autoPolicyElement.setThirdPartyCoverage(thirdPartyCoverage);

autoPolicyDoc.documentProperties().setEncoding("UTF-8");
autoPolicyDoc.documentProperties().setVersion("1.0");

System.out.print(autoPolicyDoc.xmlText(new XmlOptions().setSavePrettyPrint()));
try{
autoPolicyDoc.save(out, new XmlOptions().setSavePrettyPrint());
}catch(Exception e){
e.printStackTrace();
}
}
}


这样就按照指定的xsd文件生成了一个out.xml文件其内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<automobile-policy>
<insurance-date>2011-10-24T16:03:18.546+08:00</insurance-date>
<policyholder-information>
<name>Adam</name>
<social-security-number>1GBL7D1G3GV100770</social-security-number>
<address>Bell's Tower</address>
</policyholder-information>
<insured-vehicle>
<year-of-manufacture>2011</year-of-manufacture>
<make>XUPT</make>
<model>Optra</model>
<price>1234.0</price>
</insured-vehicle>
<liability-coverage>
<coverage-limit>123456.0</coverage-limit>
<coverage-premium>654321.0</coverage-premium>
</liability-coverage>
<third-party-coverage>
<coverage-limit>2222.0</coverage-limit>
<coverage-premium>3333.0</coverage-premium>
</third-party-coverage>
</automobile-policy>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: