2015-03-04 6 views
1

Я проанализировал xml-файл с помощью JSoup, и теперь я хочу записать (модифицированный) объект в новый XML-файл.Запись XML с помощью JSoup

Проблема в том, что JSoup добавляет кучу данных html с метаглавой головкой.

Он должен начать так:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> 
<score-partwise> 
    <identification> 
    <encoding> 

Но это на самом деле начинается так:

<!--?xml version="1.0" encoding="UTF-8"?--><!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> 
<html> 
<head></head> 
<body> 
    <score-partwise> 
    <identification> 
    <encoding> 
    <software> 
     MuseScore 1.3 
    </software> 
    <encoding-date> 
     2015-01-31 
    </encoding-date> 
    </encoding> 
    <source>http://musescore.com/score/161981 
    </identification> 
    <defaults> 
    <scaling> 
    <millimeters> 
     7.056 
    </millimeters> 
    <tenths> 
     40 
    </tenths> 
    </scaling> 
    <page-layout> 
    <page-height> 
     1683.67 
    </page-height> 
    <page-width> 
     1190.48 
    </page-width> 

Я загрузил файл, как это:

if (doc.getElementsByTag("note").isEmpty()) { 
     doc = Jsoup.parse(input, "UTF-16", filename); 
     if (doc.getElementsByTag("note").isEmpty()) { 
      System.out.println("Please check that your file is encoded in UTF-8 or UTF-16 and contains notes."); 
     } 
    } 

И попытались письменность это примерно так:

BufferedWriter htmlWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.xml"), "UTF-8")); 
     htmlWriter.write(doc.outerHtml()); 

-> Я также пробовал doc.html() и doc.toString(). Все тот же вывод.

Любые идеи? Я просто хочу, чтобы это было написано так же, как оно было прочитано.

ответ

1

Это решило его:

InputStream is = new FileInputStream(filename) { 
    @Override 
    public int read() throws IOException { 
     return 0; 
    } 
}; 

    doc = Jsoup.parse(is, "UTF-8", "", Parser.xmlParser()); 


if (doc.getElementsByTag("note").isEmpty()) { 
    doc = Jsoup.parse(is, "UTF-8", "", Parser.xmlParser()); 
    if (doc.getElementsByTag("note").isEmpty()) { 
     System.out.println("Please check that your file is encoded in UTF-8 or UTF-16 and contains notes."); 
    } 
} 
Смежные вопросы