Wie handhabt ihr die BOM's im XML?

BuffaloBill

Mitglied
Ich hab da mal eine Frage: Wie handhabt ihr XML's mit BOM's (Byte of order Marks)?

Ich habe etwas gegoogled und in den Englischen wird oft auf diese Seite verlinkt:
http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html

Wenn ich das richtig verstanden habe formatiert er hier einfach kurzerhand das ganze Dokument nach ANSI. Das will ich aber nicht - das Dokument is ja nicht nur zum Witz in UTF8 (von wegen äöü und so :)) - und das sollte es auch bleiben.

Ich öffne meine XML's nomalerweise mit:
Code:
  private Document OpenFile (String location){
            Document doc = null;
            try {
        doc = new SAXBuilder().build( location );       
            } catch (JDOMException | IOException e) {
        e.printStackTrace();
            }
    return doc;       
    }

und dann geht es mit JDOM weiter.

Für mich wärs am einfachsten den BOM zu löschen, ich habe allerdings bissher noch nicht herausgefunden wie dies am einfachsten zu bewerkstelligen ist. Often verweist man auf irgendwelche Ignore-input streams, aber ich brauch das Dokument am ende nicht als Stream, sondern als Document
 

BuffaloBill

Mitglied
Ich beantworte meine Frage mal eben selber.

Mit Apache Commons IO


Java:
import org.apache.commons.io.FileUtils;
public class BOMremover {
        private void RemoveBom(){
            File MyFile = new File (Path);
            try {
                List<String> Content = FileUtils.readLines(MyFile, "UTF-16");
                String Start=Content.get(0);
                Content.set(0, "<?xml version=\"1.0\" encoding=\"utf-16\"?>");
                FileUtils.writeLines(MyFile, Content);
              
            } catch (IOException ex) {
                Logger.getLogger(BOMremover.class.getName()).log(Level.SEVERE, null, ex);
            }
          
        }

Natürlich mit dem entsprechenden Encoding (bei mir UTF 16) zu versehen
 

Neue Themen


Oben