# Wie handhabt ihr die BOM's im XML?



## BuffaloBill (20. Aug 2015)

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:

```
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 (25. Aug 2015)

Ich beantworte meine Frage mal eben selber.

Mit Apache Commons IO



```
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


----------

