如何使用utf-8编码解析来自服务的XML特殊字符
问题描述:
我想解析来自服务的“内容”类型的内容。如何使用utf-8编码解析来自服务的XML特殊字符
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
myXMLHandler = new XMLHandler();
xr.setContentHandler(myXMLHandler);
URL _url = new URL(params[0]);
xr.parse(new InputSource(_url.openStream()));
答
我试过DOM Parser而不是XaxParser。检查下面的函数,并调用它内部的后台线程:
public String readXML(){
StringBuilder stringBuilder = new StringBuilder();
try {
URL _url = new URL("http://182.160.161.2/~siva/turkish/web_serv/category.php?order_by=desc&category_id=2");
File fXmlFile = new File(new InputSource(_url.openStream()).getByteStream().toString());
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(_url.openStream()).getByteStream());
//optional, but recommended
//read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("document");
Node nResp = nList.item(0);
Element fstElmnt = (Element) nResp;
NodeList nameList1 = fstElmnt.getElementsByTagName("response");
Node mCat = nameList1.item(0);
Element catElmt = (Element) mCat;
NodeList catList = catElmt.getElementsByTagName("category");
System.out.println("----------------------------");
for (int temp = 0; temp < catList.getLength(); temp++) {
Node nNode = catList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
stringBuilder.append("Category ID : " + eElement.getElementsByTagName("category_name").item(0).getTextContent()+"\n");
stringBuilder.append("Category Name : " + eElement.getElementsByTagName("category_id").item(0).getTextContent());
System.out.println("Category ID : " + eElement.getElementsByTagName("category_name").item(0).getTextContent());
System.out.println("Category Name : " + eElement.getElementsByTagName("category_id").item(0).getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
这里是我的设备的屏幕截图,看看: 你可以看到那些土耳其语太:)
+0
我应该提到,在答案中,而不是调用getNodeValue(),我已经调用了getTextContent()。那完成了任务。 :) – TheLittleNaruto
你更多地解释你的代码有什么问题?什么不工作?目前的结果是什么,预期的结果是什么? –
我已经完成了从服务中解析字符串的工作,但它无法显示服务中存在的特殊字符。 [链接](http://182.160.161.2/~siva/turkish/web_serv/category.php?order_by=desc&category_id=2)。你可以指导我这样做。 – Jenefer
我检查了你的链接,我用DOM解析器试了一下,它工作的很好,我也可以阅读那些土耳其文字,并在textview上显示它。 :) – TheLittleNaruto