2014-05-07 7 views
17

Vorrei creare il file XML utilizzando Java.Come creare un file XML con una struttura specifica in Java

La mia struttura XML di file:

<?xml version="1.0" encoding="UTF-8"?> 
<CONFIGURATION> 
    <BROWSER>chrome</BROWSER> 
    <BASE>http:fut</BASE> 
    <ENVIRONMENT>abcd</ENVIRONMENT> 
    <USER>john</USER> 
    <PASSWORD>abcd123</PASSWORD> 
    <ORGANIZATION>Tim</ORGANIZATION> 
    <EMPLOYEE> 
     <EMP_NAME>Anhorn, Irene</EMP_NAME> 
     <ACT_DATE>20131201</ACT_DATE> 
     <DATE_IN>20131201</DATE_IN> 
     <CLOCK_IN>0800</CLOCK_IN> 
     <DATE_OUT>20131201</DATE_OUT> 
     <CLOCK_OUT>1600</CLOCK_OUT> 
    </EMPLOYEE> 
    <EMPLOYEE> 
     <EMP_NAME>Arlegui, Karen Jay</EMP_NAME> 
     <ACT_DATE>20131201</ACT_DATE> 
     <DATE_IN>20131201</DATE_IN> 
     <CLOCK_IN>1600</CLOCK_IN> 
     <DATE_OUT>20131202</DATE_OUT> 
     <CLOCK_OUT>0000</CLOCK_OUT> 
    </EMPLOYEE> 
</CONFIGURATION> 
+1

Hai provato qualche codice? Controllare http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/ – Jay

+0

L'ho provato, ma non ha funzionato :( – user3438838

risposta

9

È possibile utilizzare la libreria JDOM in Java. Definisci i tuoi tag come oggetti Element, documenta i tuoi elementi con Document Class e crea il tuo file xml con SAXBuilder. Prova questo esempio:

Element root=new Element("CONFIGURATION"); 
Document doc=new Document(); 

Element child1=new Element("BROWSER"); 
child1.addContent("chrome"); 
Element child2=new Element("BASE"); 
child1.addContent("http:fut"); 
Element child3=new Element("EMPLOYEE"); 
child3.addContent(new Element("EMP_NAME").addContent("Anhorn, Irene")); 

root.addContent(child1); 
root.addContent(child2); 
root.addContent(child3); 

doc.setRootElement(root); 

XMLOutputter outter=new XMLOutputter(); 
outter.setFormat(Format.getPrettyFormat()); 
outter.output(doc, new FileWriter(new File("myxml.xml"))); 
10

Uso JAXB: http://www.mkyong.com/java/jaxb-hello-world-example/

package com.mkyong.core; 

import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Customer { 

    String name; 
    int age; 
    int id; 

    public String getName() { 
     return name; 
    } 

    @XmlElement 
    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    @XmlElement 
    public void setAge(int age) { 
     this.age = age; 
    } 

    public int getId() { 
     return id; 
    } 

    @XmlAttribute 
    public void setId(int id) { 
     this.id = id; 
    } 

} 
package com.mkyong.core; 

import java.io.File; 
import javax.xml.bind.JAXBContext; 
import javax.xml.bind.JAXBException; 
import javax.xml.bind.Marshaller; 

public class JAXBExample { 
    public static void main(String[] args) { 

     Customer customer = new Customer(); 
     customer.setId(100); 
     customer.setName("mkyong"); 
     customer.setAge(29); 

     try { 

     File file = new File("C:\\file.xml"); 
     JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); 
     Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 

     // output pretty printed 
     jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

     jaxbMarshaller.marshal(customer, file); 
     jaxbMarshaller.marshal(customer, System.out); 

     } catch (JAXBException e) { 
     e.printStackTrace(); 
     } 

    } 
} 
9

Non v'è alcuna necessità di librerie esterne, le librerie di JRE sistema forniscono tutto il necessario.

sto infering che si dispone di un oggetto org.w3c.dom.Document volete scrivere in un file

Per fare questo, si utilizza un javax.xml.transform.Transformer:

import org.w3c.dom.Document 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerConfigurationException; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

public class XMLWriter { 
    public static void writeDocumentToFile(Document document, File file) { 

     // Make a transformer factory to create the Transformer 
     TransformerFactory tFactory = TransformerFactory.newInstance(); 

     // Make the Transformer 
     Transformer transformer = tFactory.newTransformer(); 

     // Mark the document as a DOM (XML) source 
     DOMSource source = new DOMSource(document); 

     // Say where we want the XML to go 
     StreamResult result = new StreamResult(file); 

     // Write the XML to file 
     transformer.transform(source, result); 
    } 
} 

Fonte: http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html

16
public static void main(String[] args) { 

try { 

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
    Document doc = docBuilder.newDocument(); 
    Element rootElement = doc.createElement("CONFIGURATION"); 
    doc.appendChild(rootElement); 
    Element browser = doc.createElement("BROWSER"); 
    browser.appendChild(doc.createTextNode("chrome")); 
    rootElement.appendChild(browser); 
    Element base = doc.createElement("BASE"); 
    base.appendChild(doc.createTextNode("http:fut")); 
    rootElement.appendChild(base); 
    Element employee = doc.createElement("EMPLOYEE"); 
    rootElement.appendChild(employee); 
    Element empName = doc.createElement("EMP_NAME"); 
    empName.appendChild(doc.createTextNode("Anhorn, Irene")); 
    employee.appendChild(empName); 
    Element actDate = doc.createElement("ACT_DATE"); 
    actDate.appendChild(doc.createTextNode("20131201")); 
    employee.appendChild(actDate); 
    TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer = transformerFactory.newTransformer(); 
    DOMSource source = new DOMSource(doc); 
    StreamResult result = new StreamResult(new File("/Users/myXml/ScoreDetail.xml")); 
    transformer.transform(source, result); 
    System.out.println("File saved!"); 
    } catch (ParserConfigurationException pce) { 
    pce.printStackTrace(); 
    } catch (TransformerException tfe) { 
    tfe.printStackTrace();}} 

I valori in te XML sono hard coded.

+0

E 'utilizzando questa libreria JDOM per analizzare ? –

+0

Sto usando DOM Parser lib per analizzare un xml. –

Problemi correlati