2012-08-04 29 views
6

「このファイルを編集しないでください」というコメントの後に改行を追加する方法は?私は改行でtextnodeを追加しようとしましたが、動作しません。JavaでXMLファイルに改行を追加するには?

コード:

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

出力:

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

+1

うーん...それは私のマシン上の改行を持っている... –

+0

Iを持っていますJava 7を使用していますが、あなたはどうですか? – perak

+0

同様に...奇数。 –

答えて

0

私はあなたのコードを実行したとき、私は同様に空白行を持っています。エディタでファイルを表示していますか、解析して表示していますか? その場合、パーサーコードでxml:space = "preserve"の設定が正しくない可能性があります。これは、より相互運用可能であるいくつかの方法で

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

他のオプションは、XMLのルート要素自体の中にコメントを入れることです。たとえば、xincludeを使用してファイルの最終バージョンに埋め込んだとします。あなたの質問にファイルを編集しないようにする方法は含まれません。ルート要素の中に入れた場合、同じ理由でfileというよりも、このプロジェクト要素の内容を編集しないことを言うために変更する必要があります。

0

改行なしでは、インデント、コメントと次のノードを起動した場合でも、以降のコメントの後に存在しない深さ0

関連する問題