1

我使用了一个关于 listview 从互联网解析 xm 并使用 LasyAdapter 显示列表视图中的项目的教程。当我在 xml 中添加波斯字符(到子节点之一中)时,结果是列表视图中的一些框(在列表视图中显示文本之后)。xml 的格式也是 UTF-8。我也使用了字体(但没有用)。此外,当我在应用程序中输入 Pwesian 时,它显示正常,但无法显示从 xml 解析的 Persiann 内容。提前致谢。我用原始的 XMLparser 更新了帖子(这是问题所在)。

public String getXmlFromUrl(String url) {
    String xml = null;

    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        xml = EntityUtils.toString(httpEntity);

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    // return XML
    return xml;
}

public Document getDomElement(String xml) {
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    try {

        DocumentBuilder db = dbf.newDocumentBuilder();

        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));
        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 doc;
}
4

3 回答 3

2

我能找到答案。感谢@Serdak。他让我想起了读者。在 getXMLFromUrl 部分我应该更改:
xml = EntityUtils.toString(httpEntity);toxml = EntityUtils.toString(httpEntity, "UTF-8");
和 getDomElement 部分我应该更改:
InputSource is = new InputSource(); is.setCharacterStream(new StringReader(xml));toInputSource is = new InputSource(new ByteArrayInputStream(xml.getBytes("UTF-8")));
请注意,“url”和“xml”都是由主要活动调用并在 XMLparser.jave 中使用的字符串(其中包含 getXmlFromUrl( ) 和 getDomElement() )。
这些命令在主要活动中:
XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL) ;Document doc = parser.getDomElement(xml);
最好的问候。

于 2012-09-30T21:55:22.217 回答
0



当XML 字符串包含Unicode字符(例如波斯字母)时, StringReader对象会产生异常。所以请直接将InputStream对象传递给Document对象 谢谢

于 2014-09-30T08:49:01.197 回答
0

您用来读取 Xml 值的阅读器可能未设置为 UTF-8,这就是导致编码问题的原因。

尝试将您的阅读器与这样的编码选项一起使用。

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
于 2012-09-30T09:45:13.600 回答