您好 我正在尝试获取此xml响应
<?xml version="1.0" encoding="utf-8"?>
<desc c="¥99"/>
但在我的Android上每次获得¥99 ,解析xml后,而不是正确的数据(即¥99 )。有没有办法解析这个货币数据正确。如果我遗漏了什么,请纠正我。 编辑:这是用于获取xml
的代码docBuilder = docBuilderFactory.newDocumentBuilder ();
InputSource is = new InputSource ();
is.setEncoding ("UTF-8");
Document doc = null;
is.setCharacterStream (new StringReader (xmlStr));
doc = docBuilder.parse (is);
if (doc != null)
{
doc.getDocumentElement ().normalize ();
NodeList detail = doc.getElementsByTagName ("desc");
String c = detail.item (0).getAttributes ().getNamedItem ("c").getNodeValue ();
}
答案 0 :(得分:0)
答案取决于您解析XML的方式。例如,其中一个重载的Xml#parse()
方法接受一个Xml.Encoding
参数,您可以使用该参数指定源是UTF-8。
其他解析方法也可能有设置编码的选项。只需查看文档。
当然,服务器完全有可能无法生成正确的UTF-8,即使它在XML文件中声明为正确。
答案 1 :(得分:0)
如果我们有您正在阅读XML流的代码,那将会有所帮助。 我假设您需要确保以正确的编码读取流(因为流读取器可能不会考虑XML声明的编码。
答案 2 :(得分:0)
这看起来不像格式良好的XML。没有属性名称,只有c
元素。这似乎不足以得到正确的结果......
答案 3 :(得分:0)
好的,使用示例代码,我猜是setCharacterStream()
会导致错误。如果没有自己测试,docs表示编码仅由字节流使用,因此请改用setByteStream()
,或者更好地使用InputSource
的{{3}}。
答案 4 :(得分:0)
您好 感谢您的支持我认识到了这个问题,我从服务器获得响应的方法有以下代码
String strResponse = EntityUtils.toString (response.getEntity ());
其中`response.getEntity()。getContentEncoding()返回null,所以我将其更改为
String strResponse = EntityUtils.toString (response.getEntity (),"UTF-8");
其中“UTF-8”是默认字符集。
感谢StackOverFlow!