我有一個XML解析器完美的作品,當我從文件加載:問題解析來自一個字符串的XML,但沒有一個文件
private void getParsedXML(int id, Context context) throws Exception {
/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
/* Get the XMLReader of the SAXParser we created. */
XMLReader xr = sp.getXMLReader();
/* Create a new ContentHandler and apply it to the XML-Reader */
XMLHandlerLevel myExampleHandler = new XMLHandlerLevel();
xr.setContentHandler(myExampleHandler);
/* Load xml file from raw folder*/
InputStream in = context.getResources().openRawResource(id);
/* Begin parsing */
xr.parse(new InputSource(in));
this.levelData = myExampleHandler.getLevelData();
in.close();
}
但現在我也得到索姆內容形成一個服務器。 XML是再發送一個字符串,這是它的塊:
private void getParsedXML(String s) throws Exception{
if(this.levelData == null){
InputStream in = StringToStream(s);
/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLHandlerLevel myExampleHandler = new XMLHandlerLevel();
XMLReader xr = sp.getXMLReader();
/* Begin parsing */
xr.parse(new InputSource(in));
this.levelData = myExampleHandler.getLevelData();
Log.e("jason",(levelData!=null)?levelData.toString():null);
in.close();
}
}
這裏是StringToString功能
public static InputStream StringToStream(String text) {
InputStream is = null;
/*
* Convert String to InputStream using ByteArrayInputStream
* class. This class constructor takes the string byte array
* which can be done by calling the getBytes() method.
*/
try {
is = new ByteArrayInputStream(text.getBytes("UTF-8"));
is.reset();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (Exception e){
Log.e("jason","failed again");
}
return is;
}
但是,這並不工作...
我確定String的內容。 和我測試了StringToStream函數,它工作正常。
我也把日誌放在XMLHandlerLevel來檢查發生了什麼,沒有函數startDocument()甚至沒有調用,但我沒有得到任何錯誤消息沒有例外,所以我完全失去了解釋這一點。
繼續: 當XML來自context.getResources()。openRawResource(id); 但不是當它形成一個字符串 爲什麼?
感謝您的任何想法
傑森
你是什麼意思,它不工作?拋出異常嗎? – kgiannakakis 2011-04-14 11:31:44
你沒有把文本變成InputStream,StringReader會更好。但是,解碼代碼基本相同 - 必須有其他錯誤?在這樣的情況下,使解析方法採用xml源代碼,以使工作和非工作代碼共享一些邏輯,以便您可以消除共享代碼作爲問題。 – ThomasRS 2011-04-14 11:34:54
@kgiannakakis沒有異常拋出這是最令我討厭的東西。 @Thomas tis已經做了我所做的唯一的區別是在InputSource上創建 – 2011-04-14 12:06:54