我正在尝试解析包含外来字母的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解析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)