Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

文字コードShift-jisでXMLドキュメントを生成

はじめまして。いつも拝読させていただいております。

現在、JavaのDOMを使用してXMLドキュメントを生成しているのですが、
文字コードUTF-8であれば、うまく生成できるのですが、Shift-JISで生成すると希望通りの結果が出力されません。


----ソースコード
        //XML生成準備
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document xmlDoc = docBuilder.newDocument();

        
        //ルート要素の作成
        Element rootEl = xmlDoc.createElement("root");
        xmlDoc.appendChild(rootEl);
        rootEl.appendChild(xmlDoc.createTextNode("テスト"));
        
        //ファイルの出力
        TransformerFactory transFactory = TransformerFactory.newInstance();
        Transformer transformer = transFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, "Shift-JIS");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        
        Source source = new DOMSource(doc);
        os = new FileOutputStream(oFile);
        Result result = new StreamResult(os);

        transformer.transform(source, result);
        os.close();
        
        
----生成されたXML
<?xml version="1.0" encoding="Shift-JIS"?>
<root>&#12390;&#12377;&#12392;
</root>

上記、root要素のテキストが、URLエンコードされて出力されます。
ブラウザで開くと問題は無いのですが、テキストで読み込んだときに見づらいのと、
上のXMLドキュメントを、
Docmuent doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("xxxx.xml"));
などと読み込んだ際、
org.xml.sax.SAXParseException Invalid encoding name "Shift-JIS".
・・・というエラーが出るなど、困っています。

ひとまず、Shift-JISでURLエンコードされないように出力したいのですが、
何かいい方法はありませんでしょうか。

ご教授お願いいたします。

Java:j2sdk 1.4.1
Tomcat:tomcat 4.1.31
ブラウザ:IE6

1

回答

8262

閲覧

1件の回答

評価

0

>transformer.setOutputProperty(OutputKeys.ENCODING, "Shift-JIS");

ここは"Shift_JIS"の間違いですね。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。