1

非標準文字 (奇妙な「引用符」など) を含む 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でエンコードされた文字を取得する方法はありますか?

4

1 に答える 1