2016-06-06 22 views
0

Ich brauche hier XML-Dokument, das mit Schrägstrich erstellen enden, wenn XML-Element in einer Zeile (<test/> statt <test></test>)XML-Dokument erstellen, die (statt ‚<test></test>‚‘<test />‘) mit Schrägstrich

ist die Code-Beispiel XML-Dokumente zu erstellen, wie

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<cars><supercars company="Ferrari"> 
<carname type="formula one"></carname> 
<carname type="sports"></carname> 
</supercars></cars> 

folgt aber ich möchte die XML-Dokumente wie diese

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<cars><supercars company="Ferrari"> 
<carname type="formula one"/> 
<carname type="sports"/> 
</supercars></cars> 
sein sollte 0

anzumerken, dass keine da </carname ist >

import java.io.IOException; 
import java.io.StringWriter; 

import javax.xml.stream.XMLOutputFactory; 
import javax.xml.stream.XMLStreamException; 
import javax.xml.stream.XMLStreamWriter; 

public class StAXCreateXMLDemo { 
    public static void main(String[] args) { 
    try { 
    StringWriter stringWriter = new StringWriter(); 

    XMLOutputFactory xMLOutputFactory = XMLOutputFactory.newInstance();  
    XMLStreamWriter xMLStreamWriter = xMLOutputFactory.createXMLStreamWriter(stringWriter); 

    xMLStreamWriter.writeStartDocument(); 
    xMLStreamWriter.writeStartElement("cars"); 

    xMLStreamWriter.writeStartElement("supercars");    
    xMLStreamWriter.writeAttribute("company", "Ferrari"); 

    xMLStreamWriter.writeStartElement("carname");   
    xMLStreamWriter.writeAttribute("type", "formula one"); 

    xMLStreamWriter.writeEndElement(); 

    xMLStreamWriter.writeStartElement("carname");   
    xMLStreamWriter.writeAttribute("type", "sports"); 

    xMLStreamWriter.writeEndElement(); 

    xMLStreamWriter.writeEndElement(); 
    xMLStreamWriter.writeEndDocument(); 

    xMLStreamWriter.flush(); 
    xMLStreamWriter.close(); 

    String xmlString = stringWriter.getBuffer().toString(); 

    stringWriter.close(); 

    System.out.println(xmlString); 

    } catch (XMLStreamException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } 
    } 
+0

du würdest müssen Sie Java mitteilen, dass Sie ein Singleton-Tag erstellen möchten. Ohne ein dtd würde java einfach davon ausgehen, dass das von Ihnen erstellte Tag kein Singleton ist und andere Tags enthalten kann und Ihnen die ' ' Version gibt. –

Antwort

2

Diese XMLStreamWriter.writeEmptyElement unter Verwendung erreicht werden kann:

Statt

von
xMLStreamWriter.writeStartElement("carname"); 
xMLStreamWriter.writeAttribute("type", "formula one"); 
xMLStreamWriter.writeEndElement(); 

Verwendung

xMLStreamWriter.writeEmptyElement("carname"); 
xMLStreamWriter.writeAttribute("type", "formula one");