2012-08-04 10 views
6

Wie wird der Zeilenumbruch nach dem Kommentar "Datei nicht bearbeiten" eingefügt? Ich habe versucht, Textnode mit Zeilenumbruch hinzuzufügen, aber es funktioniert nicht.Wie Zeilenumbruch in XML-Datei mit Java hinzufügen?

Code:

import java.io.File; 

import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.OutputKeys; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

public class Main { 
    public static void main(String[] args) { 
     try { 
      final Document doc = DocumentBuilderFactory.newInstance(). 
        newDocumentBuilder().newDocument(); 

      doc.appendChild(doc.createComment(" DO NOT EDIT THIS FILE ")); 

      final Element rootElement = doc.createElement("projects"); 
      doc.appendChild(rootElement); 

      final Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
      transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 
      transformer.transform(new DOMSource(doc), new StreamResult(new File("C:/abc.xml"))); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Ausgang:

<!-- DO NOT EDIT THIS FILE --><projects/> 

+1

Hmm ... es einen Zeilenumbruch auf meiner Maschine hat ... –

+0

I benutze Java 7, was ist mit dir? – perak

+0

Ebenso ... Seltsam. –

Antwort

0

Ich habe eine ebenso leere Zeile, wenn ich Ihren Code lief. Betrachten Sie die Datei in einem Editor oder analysieren Sie sie und zeigen Sie sie an? Ich frage, weil xml: space = "preserve" -Einstellungen in Ihrem Parser-Code möglicherweise wackelig sind, wenn das der Fall ist.

Die andere Option ist die Bemerkung in dem XML-Wurzelelement setzt sich:

 final Element rootElement = doc.createElement("projects"); 
     doc.appendChild(rootElement); 
     rootElement.appendChild(doc.createComment(" DO NOT EDIT THIS FILE ")); 

In mehreren Möglichkeiten mehr interoperabel ist. Angenommen, Sie verwenden xinclude zum Einbetten in die endgültige Version der Datei. Die Art und Weise, wie Sie in Ihrer Frage den Hinweis haben, die Datei nicht zu bearbeiten, wird nicht berücksichtigt. Wenn Sie es in das root-Element einfügen, wird es dies ändern (und Sie sollten es wahrscheinlich ändern, um etwas über das Nicht-Editieren des Inhalts dieses Projektelements zu sagen, anstatt die Datei aus dem gleichen Grund zu sagen).

0

Es gibt keine newLine nach dem Kommentar da, auch wenn man den Einzug aktiviert, den Kommentar und den folgenden Knoten haben Tiefe 0.

Verwandte Themen