JAXB
If you have an xsd, you can generate the @javax.xml.bind.annotation.XmlRootElement annotated Java POJOs with xjc:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/xjc.html
example:
cd D:\pierre\wildfly-11.0.0.CR1\docs\schema xjc .\wildfly-config_5_0.xsd -d D:\pierre\workspaceneon\PVXmlParser\src\
Here an example to PARSE an xml file https://www.javacodegeeks.com/2013/02/jaxb-tutorial-getting-started.html
Here the https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/Unmarshaller.html
To generate an XSD from existing XML, try http://www.thaiopensource.com/relaxng/trang-manual.html (a bit old tool...)
package org.pierre.jbossconf; import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import jboss.domain._5.Server; public class XmlParser { public static void main(String[] args) throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(Server.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); File standaloneXmlFile = new File("D:\\pierre\\wildfly-11.0.0.CR1\\standalone\\configuration\\standalone.xml"); Server server = (Server)jaxbUnmarshaller.unmarshal(standaloneXmlFile); server.getProfile().getAny().forEach((item) -> {System.out.println(item);}); } }
in my case, parsing fails because of missing tokes substitution "Not a number: ${jboss.socket.binding.port-offset:0}"
these variables are present in thee standalone.xml file:
jboss.deployment.scanner.rollback.on.failure prop.remoting-connector.read.timeout jboss.home.dir jboss.bind.address jboss.bind.address.management jboss.bind.address jboss.socket.binding.port-offset jboss.management.http.port jboss.management.https.port jboss.ajp.port jboss.http.port jboss.https.port
No comments:
Post a Comment