非標準文字 (奇妙な「引用符」など) を含む XML ファイルがあります。
UTF-8 / ISO / ascii +非整列化を使用してXMLを読み取りました:
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream()),"ISO-8859-1"));
String output;
StringBuffer sb = new StringBuffer();
while ((output = br.readLine()) != null) {
//fetch XML
sb.append(output);
}
try {
jc = JAXBContext.newInstance(ServiceResponse.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
ServiceResponse OWrsp = (ServiceResponse) unmarshaller
.unmarshal(new InputSource(new StringReader(sb.toString())));
iso-8859-1コードを受け取り、それらを「リテラル」シンボルに変換/マップするオラクル関数があります。例: "’" => "左一重引用符"
JAXB は iso を使用してアンマーシャルし、文字を iso 変換でうまく表示します。つまり、奇妙な一重引用符はすべて "’" にエンコードされます。
私の文字列が次のとおりだとします。
jc = JAXBContext.newInstance(ScienceProductBuilderInfoType.class);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
//save a temp file
File file2 = new File("tmp.xml");
これはファイルに保存されます:
class of 10–11‐year‐olds. (what i want..so file saving works!)
[補足: Java ファイル リーダーを使用してファイルを読み込んだところ、上記の文字列が正常に出力されました]
私が抱えている問題は、jaxb unmarshaller を使用した STRING 表現に奇妙な出力があることです。何らかの理由で、表現する文字列を取得できないようです –.
I 1 の場合: 非整列化された xml 出力を確認します。
class of 10?11?year?olds
2: ファイル出力:
class of 10–11‐year‐olds
私は保存されたXMLからファイルを読み取ろうとし、それをアンマーシャリングしました(文字列に - を取得することを期待して)
String sCurrentLine;
BufferedReader br = new BufferedReader(new FileReader("tmp.xml"));
StringBuffer sb = new StringBuffer();
while ((sCurrentLine = br.readLine()) != null) {
sb.append(sCurrentLine);
}
ScienceProductBuilderInfoType rsp = (ScienceProductBuilderInfoType) unm
.unmarshal(new InputSource(new StringReader(sb.toString())));
役立たず。
jaxbでiso-8859-1でエンコードされた文字を取得する方法はありますか?