scomp -out employeeschema.jar employeeschema.xsd
File xmlFile = new File("c:\employees.xml"); // Bind the instance to the generated XMLBeans types. EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile); // Get and print pieces of the XML instance. Employees emps = empDoc.getEmployees(); Employee[] empArray = emps.getEmployeeArray(); for (int i = 0; i < empArray.length; i++) { System.out.println(empArray[i]); }
瀹炶返涓亣鍒扮殑闂錛?BR>濡備綍淇敼緙栬瘧shema 浜х敓鐨刯ava 綾葷殑package 鐩綍緇撴瀯錛?/FONT>
鍙傝冿細http://wiki.apache.org/xmlbeans/XmlBeansFaq#configPackageNameCan I change the default package names for the java classes generated from my schema?
You can create a file that ends in .xsdconfig to map targetnamespace to packagename. Put the .xsdconfig file in the same directory as the .xsd that you are compiling. Here is an example .xsdconfig:
<!-- An xsdconfig file must begin with a "config" element in the http://www.bea.com/2002/09/xbean/config namespace. Also, be sure to declare any namespaces used to qualify types in your schema (here, the namespace corresponding to the pol prefix. --> <xb:config xmlns:pol="http://openuri.org/easypoLocal" xmlns:xb="http://www.bea.com/2002/09/xbean/config"> <!-- Use the "namespace" element to map a namespace to the Java package name that should be generated. --> <xb:namespace uri="http://openuri.org/easypoLocal"> <xb:package>org.openuri.easypo.xsdconfig</xb:package> </xb:namespace> <!-- Use the "qname" element to map schema type names to generated Java type names. In these examples, the name attribute's value is the XML element name; the javaname attribute's value is the Java type that should be generated. --> <xb:qname name="pol:CUST" javaname="Customer"/> <xb:qname name="pol:PURCH_ORDER" javaname="PurchaseOrder"/> </xb:config>Notice that you can also map specific element/attribute names to java names.
Note: If schema doesn't include targenamespace then use
<xb:namespace uri="##any"> <xb:package>org.openuri.easypo.xsdconfig</xb:package> </xb:namespace>to specify package names
Note: XmlBeans doesn鈥檛 support using two or more sets of java classes (in different packages) mapped to schema types/elements that have the same names and target namespaces, using all in the same class loader. Depending on the direction you are using for the java classes to schema types mapping, some features might not work correctly. This is because even though the package names for the java classes are different, the schema location for the schema metadata (.xsb files) is the same and contains the corresponding implementing java class, so the JVM will always pick up the first on the classpath. This can be avoided if multiple class loaders are used.
鍏堢湅涓涓?scomp 鍛戒護: xmlbeans-home/bin 瑕佸姞鍏ュ埌path 涓紝
scomp 鍙傛暟鍥?BR>緙栧啓鑷繁鐨剆chema鏂囦歡錛歸eather_latlong.xsd<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ct="http://beans.jhalo.com"
targetNamespace="http://beans.jhalo.com"
elementFormDefault="qualified">
<!-- This XML Schema describes xml documents
containing either weather details or latlong
details of a location based on Zipcode Two Global
elements Weather and Latlong, and one Global
Attribute Zipcode are declared.-->
<xsd:element name="Weather">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Temperature"
type="xsd:float"/>
<xsd:element name="Humidity"
type="xsd:float"/>
<xsd:element name="Visibility"
type="xsd:float"/>
<xsd:element name="Datetime"
type="xsd:dateTime"/>
</xsd:sequence>
<xsd:attribute ref="ct:Zipcode"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Latlong">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Latitude"
type="xsd:string"/>
<xsd:element name="Longitude"
type="xsd:string"/>
</xsd:sequence>
<xsd:attribute ref="ct:Zipcode"/>
</xsd:complexType>
</xsd:element>
<xsd:attribute name="Zipcode"
type="xsd:string"/>
</xsd:schema>
#
2
緙栧啓myconfig.xsdconfig 瀛樻斁鍚屼竴鐩綍
#<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config"
xmlns:ct="http://beans.jhalo.com">
<xb:namespace uri="http://beans.jhalo.com http://services.jhalo.com">
<xb:package>org.jhalo</xb:package>
</xb:namespace>
<xb:namespace uri="##any">
<xb:prefix>Xml</xb:prefix>
<xb:suffix>Bean</xb:suffix>
</xb:namespace>
![]()
<xb:qname name="ct:Zipcode" javaname="Zip" />
<xb:qname name="ct:Datetime" javaname="Today" />
</xb:config>
濡傛灉涓嶄嬌鐢╩yconfig.xsdconfig 榪涜緙栬瘧
scomp -out weather.jar weather_latlong.xsd
鐢熸垚鐨?weather.jar 涓猴細com/jhalo/beans/xxxx
浣跨敤 .xsdconfig 緙栬瘧
scomp -out weather.jar weather_latlong.xsd myconfig.xsdconfig
鐢熸垚jar 緇撴瀯涓猴細 org/jhalo/
鍦ㄥ啓嫻嬭瘯紼嬪簭鍙戠幇, Datetime -->Today 涔熸敼鍙樹簡銆?BR>import org.apache.xmlbeans.*;
import org.jhalo.XmlLatlongDocumentBean;
import org.jhalo.XmlWeatherDocumentBean;
XmlWeatherDocumentBean wdoc;
XmlWeatherDocumentBean.Weather w;
wdoc = XmlWeatherDocumentBean.Factory.newInstance();
w = wdoc.addNewWeather();
w.setToday(Calendar.getInstance());
瀹屾瘯.:)~