Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to create a xml structure programatically in java [closed]

i want to create a xml structure programatically in java

the structure is like this

<?xml version="1.0" encoding="UTF-8"?>
 <System token="com.test.dummy">
     <Parameter token="xyz">
        <Value>4</Value>
     </Parameter>
  </System>

i have to create a temporary file and then insert this data in the file. I am new to this area, can someone help me.

like image 578
curious Avatar asked Dec 12 '13 07:12

curious


2 Answers

Use DOMParser best way to write xml in java

http://docs.oracle.com/cd/B13789_01/appdev.101/b12024/oracle/xml/parser/v2/DOMParser.html

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();
  }
}
}

see this http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/

like image 146
Deepak Avatar answered Oct 24 '22 05:10

Deepak


You can also use StringBuilderto form your xml struture. StringBuilder is light weight but does not know XML so doesn't validate structure at all.But its worth going for it because of its simplicity.

StringBuilder xmlBuilder = new StringBuilder("<?xml version="1.0" encoding="UTF-8"?>");
   xmlBuilder.append("<System token=\"com.test.dummy\">");
   xmlBuilder.append("<Parameter token=\"xyz\">").append("<Value>4</Value>");
   xmlBuilder.append("</Parameter>");
   xmlBuilder.append("</System>");
   xmlBuilder.toString();

You can also make your elements accept dynamic values. Make sure your xml document structure is correct

like image 30
vikrant Avatar answered Oct 24 '22 03:10

vikrant