iteye_3692 2010-06-30 15:39
浏览 399
已采纳

在使用StAX中,XMLStreamWriter.writeStartDocument()遇到的一个问题,求教!

最近在使用StAX的时候,看了很多资料,
XMLStreamWriter.writeStartDocument()有很多重载:
void writeStartDocument()
void writeStartDocument(String version)
void writeStartDocument(String encoding, String version)

在使用最后一个的时候就有问题了,
如果指定encoding,就可能会报错:
Exception in thread "main" javax.xml.stream.XMLStreamException: Underlying stream encoding 'GBK' and input paramter for writeStartDocument() method 'ISO-8859-1' do not match.

查找之后发现这个是与底层流编码不匹配的问题造成的。

StAX是一套接口,我现在所用的是JDK1.6_20里面的实现。
之前在工作里用的 bea 实现的就没有遇到过该问题。
请问有人遇到过这种问题么?
如果使用JDK1.6应该如何处理底层流编码呢?
附上源代码
[code="java"]
package com.yy.xml.stax.test;

import java.io.OutputStream;

import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

public class StAXTest {
public static void main(String[] args) throws XMLStreamException {
String ENCODING = "ISO-8859-1";
// Create an output factory
XMLOutputFactory xmlof = XMLOutputFactory.newInstance();
// Create an XML stream writer
XMLStreamWriter xmlw = xmlof.createXMLStreamWriter(System.out);
// Write XML prologue
//xmlw.writeStartDocument();
xmlw.writeStartDocument(ENCODING, "1.0");
}
}
[/code]

  • 写回答

1条回答 默认 最新

  • myali88 2010-06-30 16:57
    关注

    [quote]
    Write the XML Declaration. Note that the encoding parameter does not set the actual encoding of the underlying output. [b]That must be set when the instance of the XMLStreamWriter is created using the XMLOutputFactory[/b]
    [/quote]
    writeStartDocument方法里说的明白,你采用下面的方式试试:
    [code="java"]
    String ENCODING = "ISO-8859-1";

    // Create an output factory

    XMLOutputFactory xmlof = XMLOutputFactory.newInstance();

    // Create an XML stream writer

    XMLStreamWriter xmlw = xmlof.createXMLStreamWriter(System.out , ENCODING);

    // Write XML prologue

    //xmlw.writeStartDocument();

    xmlw.writeStartDocument(ENCODING, "1.0");

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵