2012-08-04 25 views
6

Come aggiungere un'interruzione di riga dopo il commento "non modificare questo file"? Ho provato ad aggiungere textnode con interruzione di riga, ma non funziona.Come aggiungere un'interruzione di riga nel file XML con Java?

Codice:

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

uscita:

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

+1

Hmm ... ha un'interruzione di linea sulla mia macchina ... –

+0

I sto usando Java 7, e tu? – perak

+0

Allo stesso modo ... Strano. –

risposta

0

Ho una riga vuota e quando mi sono imbattuto il codice. Stai visualizzando il file in un editor o lo stai analizzando e visualizzando? Chiedo perché le impostazioni xml: space = "preserve" potrebbero essere fastidiose nel codice del parser, se questo è il caso.

L'altra opzione è quella di mettere il commento all'interno dell'elemento radice XML stesso:

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

In molti modi questo è più interoperabile. Ad esempio, supponiamo che tu usi xinclude per incorporare poi la versione finale del file. Il modo in cui hai nella tua domanda l'avviso di non modificare il file non sarà incluso. Se lo inserisci all'interno dell'elemento radice lo farà (e probabilmente dovresti cambiarlo per dire qualcosa riguardo alla mancata modifica dei contenuti di questo elemento del progetto, piuttosto che pronunciare il file per lo stesso motivo).

0

Non c'è UnaRigaVuota dopo il commento in quanto, anche se è stato attivato il rientro, il commento e il seguente nodo avere profondità 0.

Problemi correlati