android-使用dom和特殊字符进行XML解析

android-使用dom和特殊字符进行XML解析,第1张

概述我正在尝试解析包含外来字母的xml(特别是æøå),但是在成功解析它们时遇到了问题.我没有任何错误,但是字母被解析为:而不是æ我得到Ã,而不是åim得到Ã¥和øim得到ø我也只是注意到字符-不能正确显示.我知道我可以为3个字母做.replaceAll,但是我不确定这里的问题是我在某个地

我正在尝试解析包含外来字母的xml(特别是æøå),但是在成功解析它们时遇到了问题.我没有任何错误,但是字母被解析为:而不是æ我得到Ã,而不是åim得到Ã¥和øim得到ø
我也只是注意到字符-不能正确显示.
我知道我可以为3个字母做.replaceAll,但是我不确定这里的问题是我在某个地方犯了一个错误,还是如果不沿着replaceAll的路线不可能实现的话.

编码:

    private document getDomElement(String xml) {        document doc = null;        documentBuilderFactory dbf = documentBuilderFactory.newInstance();        try {            documentBuilder db = dbf.newdocumentBuilder();            inputSource is = new inputSource(new ByteArrayinputStream(                    xml.getBytes()));            // is.setCharacterStream(new StringReader(xml));            is.setEnCoding("UTF-8");            Log.i(TAG, "EnCoding: " + is.getEnCoding());            doc = db.parse(is);        } catch (ParserConfigurationException e) {            Log.e("Error: ", e.getMessage());            return null;        } catch (SAXException e) {            Log.e("Error: ", e.getMessage());            return null;        } catch (IOException e) {            Log.e("Error: ", e.getMessage());            return null;        }        // return DOM        return doc;    }    private String getValue(Element item, String str) {        NodeList n = item.getElementsByTagname(str);        return this.getElementValue(n.item(0));    }    private final String getElementValue(Node elem) {        Node child;        if (elem != null) {            if (elem.hasChildNodes()) {                for (child = elem.getFirstChild(); child != null; child = child                        .getNextSibling()) {                    if (child.getNodeType() == Node.TEXT_NODE) {                        return child.getNodeValue();                    }                }            }        }        return "";    }}

让我知道您是否需要查看更多代码.

感谢任何建议-谢谢.

解决方法:

问题是您正在使用getBytes()将String参数转换为字节.您最好不要完全转换为字节:

inputSource is = new inputSource(new StringReader(xml));

我看到您在代码中已经注释掉了.您有什么理由不想使用它吗?

如果必须使用字节数组,则最好这样做:

inputSource is = new inputSource(new ByteArrayinputStream(    xml.getBytes("UTF-8")));

在较旧版本的AndroID上,默认字符集取决于语言环境.

总结

以上是内存溢出为你收集整理的android-使用dom和特殊字符进行XML解析全部内容,希望文章能够帮你解决android-使用dom和特殊字符进行XML解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1210774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存