{"id":1530,"date":"2016-10-03T17:24:32","date_gmt":"2016-10-03T15:24:32","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1530"},"modified":"2017-05-11T11:22:56","modified_gmt":"2017-05-11T09:22:56","slug":"java-xml","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1530","title":{"rendered":"Java &#8211; xml"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Dependencies\"><span class=\"toc_number toc_depth_1\">1<\/span> Dependencies<\/a><\/li><li><a href=\"#Model\"><span class=\"toc_number toc_depth_1\">2<\/span> Model<\/a><\/li><li><a href=\"#Convert_Object_to_XML\"><span class=\"toc_number toc_depth_1\">3<\/span> Convert Object to XML<\/a><\/li><li><a href=\"#Convert_Object_to_XSD\"><span class=\"toc_number toc_depth_1\">4<\/span> Convert Object to XSD<\/a><\/li><li><a href=\"#Convert_XML_to_Object\"><span class=\"toc_number toc_depth_1\">5<\/span> Convert XML to Object<\/a><\/li><\/ul><\/div>\n<h1><span id=\"Dependencies\">Dependencies<\/span><\/h1>\n<p>If you use maven, add this to your pom.xml :<\/p>\n<pre lang=\"xml\">\r\n<dependency>\r\n  <groupId>javax.xml.bind<\/groupId>\r\n  <artifactId>jaxb-api<\/artifactId>\r\n  <version>${jaxb-api.version}<\/version>\r\n<\/dependency>\r\n<\/pre>\n<h1><span id=\"Model\">Model<\/span><\/h1>\n<p>Let&#8217;s deal with the following model for our examples :<\/p>\n<p>User.java :<\/p>\n<pre lang=\"java\">\r\n@XmlRootElement\r\n@XmlType(propOrder={\"fistname\", \"name\"})\r\npublic class User {\r\n\r\n\tprivate String name = null;\r\n\tprivate String fistname = null;\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t@XmlElement(name=\"name\")\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tpublic String getFistname() {\r\n\t\treturn fistname;\r\n\t}\r\n\r\n\tpublic void setFistname(String fistname) {\r\n\t\tthis.fistname = fistname;\r\n\t}\t\r\n}\r\n<\/pre>\n<p>Users.java :<\/p>\n<pre lang=\"java\">\r\n@XmlRootElement\r\npublic class Users {\r\n\r\n\tprivate List<User> users = new ArrayList<User>();\r\n\r\n\t@XmlElement(name=\"user\")\r\n\tpublic List<User> getUsers() {\r\n\t\treturn users;\r\n\t}\r\n\r\n\tpublic void setUsers(List<User> users) {\r\n\t\tthis.users = users;\r\n\t} \r\n}\r\n<\/pre>\n<h1><span id=\"Convert_Object_to_XML\">Convert Object to XML<\/span><\/h1>\n<p>Let&#8217;s create a user :<\/p>\n<pre lang=\"java\">\r\n\/\/ User john doe :\r\nUser user = new User();\r\nuser.setFistname(\"john\");\r\nuser.setName(\"doe\");\t\t\r\n\r\n\/\/ Add the user to the user list (users)\r\nUsers users = new Users();\r\nusers.getUsers().add(user);\r\n\r\n<\/pre>\n<p>Now convert it to xml :<\/p>\n<pre lang=\"java\">\r\nFile outputXml = \"\/tmp\/users.xml\";\r\n\r\nJAXBContext jaxbContext = JAXBContext.newInstance(Users.class);\r\nMarshaller marshaller = jaxbContext.createMarshaller();\r\n\r\n\/\/ output pretty printed\r\nmarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);\r\n\r\n\/\/ marshal object to xml\r\nmarshaller.marshal(users, outputXml );\r\n<\/pre>\n<p>The file &#8220;\/tmp\/users.xml&#8221; will look like this :<\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<users>\r\n    <user>\r\n        <fistname>john<\/fistname>\r\n        <name>doe<\/name>\r\n    <\/user>\r\n<\/users>\r\n<\/pre>\n<p>&#8212;-<\/p>\n<h1><span id=\"Convert_Object_to_XSD\">Convert Object to XSD<\/span><\/h1>\n<p>Convert Users to xsd :<\/p>\n<pre lang=\"java\">\r\nFile outputXsd = \"\/tmp\/users.xsd\";\r\n\r\nSchemaOutputResolver schemaOutputResolver = new SchemaOutputResolver () {\t\t\t\r\n  @Override\r\n  public Result createOutput(String arg0, String arg1) throws IOException {\r\n    return new StreamResult(outputXsd );\r\n  }\r\n\t\t\t\r\n};\r\n\t\t\r\nJAXBContext jaxbContext = JAXBContext.newInstance(Users.class);\r\njaxbContext.generateSchema(schemaOutputResolver);\r\n<\/pre>\n<p>The file &#8220;\/tmp\/users.xsd&#8221; will look like this :<\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<xs:schema version=\"1.0\" xmlns:xs=\"http:\/\/www.w3.org\/2001\/XMLSchema\">\r\n\r\n  <xs:element name=\"user\" type=\"user\"\/>\r\n\r\n  <xs:element name=\"users\" type=\"users\"\/>\r\n\r\n  <xs:complexType name=\"users\">\r\n    <xs:sequence>\r\n      <xs:element ref=\"user\" minOccurs=\"0\" maxOccurs=\"unbounded\"\/>\r\n    <\/xs:sequence>\r\n  <\/xs:complexType>\r\n\r\n  <xs:complexType name=\"user\">\r\n    <xs:sequence>\r\n      <xs:element name=\"fistname\" type=\"xs:string\" minOccurs=\"0\"\/>\r\n      <xs:element name=\"name\" type=\"xs:string\" minOccurs=\"0\"\/>\r\n    <\/xs:sequence>\r\n  <\/xs:complexType>\r\n<\/xs:schema>\r\n<\/pre>\n<h1><span id=\"Convert_XML_to_Object\">Convert XML to Object<\/span><\/h1>\n<pre lang=\"java\">\r\nFile xmlFile = \"\/tmp\/users.xml\";\r\n\r\nJAXBContext jaxbContext = JAXBContext.newInstance(Users.class);\r\nUnmarshaller unmarshaller = jaxbContext.createUnmarshaller();\r\nUsers users = (Users) unmarshaller.unmarshal(xmlFile );\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Dependencies2 Model3 Convert Object to XML4 Convert Object to XSD5 Convert XML to Object Dependencies If you use maven, add this to your pom.xml : javax.xml.bind jaxb-api ${jaxb-api.version} Model Let&#8217;s deal with the following model for our examples : User.java : @XmlRootElement @XmlType(propOrder={&#8220;fistname&#8221;, &#8220;name&#8221;}) public class User { private String name = null; private [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1538,"menu_order":17,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1530","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1530"}],"version-history":[{"count":8,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1530\/revisions"}],"predecessor-version":[{"id":1974,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1530\/revisions\/1974"}],"up":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1538"}],"wp:attachment":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}