#0. To prepare the XML file to be converted, in Project vision, right-click the XML file, and on the popup menu, select "Generate xsd schema from XML files ..." and generate the XSD file by default.
Move the XSD file to the path specified in the # Config section of Configuration/sources/source.
#1. Open Pom.xml and add the following configuration section. The contents of the configuration node are set differently depending on the project. Generally, there are 3 settings: packagename,outputdirectory and sources,
For specific official documentation, see: http://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/xjc-mojo.html
<Build> <pluginmanagement> <Plugins> <plugin> <groupId>Org.apache.maven.plugins</groupId> <Artifactid>Maven-compiler-plugin</Artifactid> <Configuration> <Source>1.8</Source> <Target>1.8</Target> </Configuration> </plugin> </Plugins> </pluginmanagement> <Plugins> <plugin> <groupId>Org.codehaus.mojo</groupId> <Artifactid>Jaxb2-maven-plugin</Artifactid> <version>2.3.1</version> <executions> <Execution> <ID>Xjc</ID> <Goals> <goal>Xjc</goal> </Goals> </Execution> </executions> <Configuration> <!--The package of your generated sources, JAXB will generate directories at this package level and generate Java classes into this package - <PackageName>Jaxbhelper.entity</PackageName> <!--The path of your generated sources class, output the root directory address of the Java class - <outputdirectory>D:\Git\zfq308\JaxbHelper\src\main\java\</outputdirectory> <sources> <!--This is the path to the XSD, which can be supported by setting multiple XSD files under the sources node - <Source>D:\Git\zfq308\JaxbHelper\src\main\resources\FeedTestCase1.xsd</Source> </sources> </Configuration> </plugin> </Plugins> </Build>
View Code
#2. After adding the XML node shown in # # in the Pom file, in the MAVEN Projects Vision window, locate the node for your project, under the Plugins node,
Locate the Jaxb2 node, and after you expand, double-click the Execute JAXB2:XJC task to generate the corresponding entity under the specified output folder.
#3. When you load XML data into a concrete class object instance through JAXB, you can use the following code: In this case, Testsuitestype is the root node of the XML.
ImportJaxbHelper.Entity.TestSuitesType;ImportJavax.xml.bind.JAXBContext;Importjavax.xml.bind.JAXBException;ImportJavax.xml.bind.Unmarshaller;ImportJava.io.File; Public classApp { Public Static voidMain (string[] args)throwsjaxbexception {File file=NewFile ("D:\\git\\zfq308\\jaxbhelper\\src\\main\\resources\\feedtestcase1.xml"); Jaxbcontext Jaxbcontext= Jaxbcontext.newinstance (Testsuitestype.class); Unmarshaller Jaxbunmarshaller=Jaxbcontext.createunmarshaller (); Testsuitestype testsuites=(testsuitestype) jaxbunmarshaller.unmarshal (file); Integer I= 0;//This line is used for breakpoint testing }}
Note: When executed directly, the compiler compiles the pass, but runs the Times: Exception in thread "main" javax.xml.bind.UnmarshalException:unexpected Element (URI: "", Local: "Testsuites"). Expected elements is (none) error.
The reason for this is that JAXB does not know which Java classes you generate, and who is the primary node. To do this, add a callout to the class that corresponds to the XML root node: @XmlRootElement (name= "Testsuites")
Prior to joining:
= "Testsuitestype", Proporder = {"TestSuite"})publicclass testsuitestype {}
After joining:
@XmlRootElement (name= "testsuites")= "Testsuitestype", Proporder = {"TestSuite"}) publicclass testsuitestype {}
Can be used normally after modification.
#4. If the XML has to be modified to regenerate XSD, Java classes, and so on, you can delete the corresponding XSD, Java class and Meta-inf folder, delete the target directory if necessary , and then repeat the #2-#3即可.
How to use Jaxb2 in IJ to generate a file of the corresponding Java entity class using XML definitions