首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAXParser编码

SAXParser编码
EN

Stack Overflow用户
提问于 2012-01-03 01:26:03
回答 2查看 642关注 0票数 0

我对编码有问题。首先,可能需要编写一些代码:

代码语言:javascript
复制
URL xmlUrl = new URL("http://helion.pl/rss/GW/promocje.rss");

SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser parser = saxFactory.newSAXParser();
XMLReader reader = parser.getXMLReader();

Helion xmlHandler = new Helion();
reader.setContentHandler(xmlHandler);

InputSource inputSource = new InputSource(xmlUrl.openStream());
inputSource.setEncoding("ISO-8859-1");

reader.parse(inputSource);

该文件编码为ISO-8859-2,但是当我使用setEncoding("ISO-8859-2")文件时,无法读取该文件。请帮帮忙。

DefaultHandler:

代码语言:javascript
复制
    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        currentTagName = qName;
        if (TAG_ITEM.equalsIgnoreCase(qName)) {
            odczyt = true;
            element = new Element();
        }
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        String value = new String(ch, start, length);
        if (!value.trim().equals("")) {
            if (odczyt) {
                if (TAG_TYTOL.equalsIgnoreCase(currentTagName)) {
                    element.setTytol(value);
                } else if (TAG_OPIS.equalsIgnoreCase(currentTagName)) {
                    element.setOpis(value);
                }
            }
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        if (TAG_ITEM.equalsIgnoreCase(localName)) {
            odczyt = false;
            elementy.add(element);
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-01-03 02:14:08

正如Francis Upton提到的,在一个XML start/end元素中可以多次调用字符。你应该这样做:

代码语言:javascript
复制
   @Override
public void characters(char[] ch, int start, int length)
            throws SAXException {
String s = new String(ch, start, length);
            if (mTextBuffer == null) {
                mTextBuffer = new StringBuffer(s);
            } else {
                mTextBuffer.append(s);
            }
}

然后在endElement方法中调用element.setTytol(mTextBuffer)/element.setOpis(mTextBuffer)

票数 1
EN

Stack Overflow用户

发布于 2012-01-03 01:34:17

在您的代码中,您将其设置为ISO-8859-1,这是非常不同的,这会是问题所在吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8703567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档