UTF-8 xml でエンコードされたファイルでうまく機能するこの JCabi スニペット コードを見つけました。基本的には xml ファイルを読み取り、それを文字列として出力します。
XML xml;
try {
xml = new XMLDocument(new File("test8.xml"));
String xmlString = xml.toString();
System.out.println(xmlString);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
ただし、UTF-16 でエンコードされた xml でこの同じコードを実行するには、次のエラーが発生する必要があります。
[致命的なエラー] :1:1: プロローグではコンテンツを使用できません。スレッド「AWT-EventQueue-0」の例外 java.lang.IllegalArgumentException: 解析できません。おそらく XML が無効です
原因: org.xml.sax.SAXParseException; 行番号: 1; 列番号: 1; コンテンツはプロローグで許可されていません。
このエラーについて読んだことがありますが、これは、パーサーがプロローグを認識していないことを意味します。これは、エンコーディングのためにそこにあるはずのない文字が表示されているためです。
ソースファイルがエンコードされているクラスを「伝える」方法を提供する他のライブラリを試しましたが、ある程度機能させることができた唯一のライブラリはJCabiでしたが、見つけることができませんでした.ソースファイルが UTF-16 でエンコードされていることを伝える方法。
ありがとう、助けていただければ幸いです。