Xml file generator in java

I want to create a java swing application, from where I can generate an xml file that stores the same data, and the generated number of files will be determined by the user. My XML file stores an xml schema, and my struture XML file looks like this

<transaction> <xs:schema id="transaction" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="transaction" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="id"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="0" /> <xs:element name="sn" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="data"> <xs:complexType> <xs:sequence> <xs:element name="dateTime" type="xs:dateTime" minOccurs="0" /> <xs:element name="key" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="productData"> <xs:complexType> <xs:sequence> <xs:element name="dateTime" type="xs:dateTime" minOccurs="0" /> <xs:element name="key" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <id> <name>smith</tli> <sn>1234567</sn> </id> <data> <dateTime>2011-06-24T17:08:36.3727674+05:30</dateTime> <key>book</key> </data> <productData> <dateTime>2011-06-24T17:08:36.3727674+05:30</dateTime> <key>game</key> </productData> </transaction> 

I am new to java, if someone gives some help in snipes help, this will be more useful for me.

I want to generate xml files that contain the XML schema specified in my xml example.

+8
java xml
source share
2 answers

In java, you use JAXP to work with XML. You are using DOM related classes to generate xml. The following is a small example of using JAXP to create XML.

 import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; public class WriteXMLFile { public static void main(String argv[]) { try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); // root elements Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("company"); doc.appendChild(rootElement); // staff elements Element staff = doc.createElement("Staff"); rootElement.appendChild(staff); // set attribute to staff element Attr attr = doc.createAttribute("id"); attr.setValue("1"); staff.setAttributeNode(attr); // shorten way // staff.setAttribute("id", "1"); // firstname elements Element firstname = doc.createElement("firstname"); firstname.appendChild(doc.createTextNode("yong")); staff.appendChild(firstname); // lastname elements Element lastname = doc.createElement("lastname"); lastname.appendChild(doc.createTextNode("mook kim")); staff.appendChild(lastname); // nickname elements Element nickname = doc.createElement("nickname"); nickname.appendChild(doc.createTextNode("mkyong")); staff.appendChild(nickname); // salary elements Element salary = doc.createElement("salary"); salary.appendChild(doc.createTextNode("100000")); staff.appendChild(salary); // write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("C:\\file.xml")); // Output to console for testing // StreamResult result = new StreamResult(System.out); transformer.transform(source, result); System.out.println("File saved!"); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } catch (TransformerException tfe) { tfe.printStackTrace(); } } } 
+10
source share

I have an older article on my personal blog that describes several different ways to generate XML in Java: http://blogger.ziesemer.com/2007/06/xml-generation-in-java.html

Basically, some common parameters for working: JAXP, DOM, SAX (like hacking to generate, but it works), StAX, XSLT or XML bindings (JAXB) - which I did not discuss in my post.

Since you already have an XML schema to work, JAXB may work well for you. Otherwise, I will probably go with StAX as one of the new and efficient APIs.

0
source share

All Articles