我从资产中获取文件。
InputStream asset = packageResources.getAssets().open("some.xml");
我有 InputStream ,但是当我使用
时packageResources.getXml(appFilterResId);
我有 XmlResourceParser ,但我需要 InputStream 。 不知道怎么做?
更新
try {
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser()
.getXMLReader();
// create a SAXXMLHandler
SAXXMLHandler saxHandler = new SAXXMLHandler(manager, packName);
// store handler in XMLReader
xmlReader.setContentHandler(saxHandler);
// the process starts
xmlReader.parse(new InputSource(xmlInputStream));
// get the `Employee list`
icons = saxHandler.getIcons();
} catch (Exception ex) {
Log.d("XML", "SAXXMLParser: parse() failed");
}
下面:
xmlReader.parse(new InputSource(xmlInputStream));
需要 InputStream
答案 0 :(得分:0)
如果您希望通过r.id ..
在输入流中获取xml,可以尝试这种方式 InputStream is = this.getResources().openRawResource(R.xml.appxml);
更新:我在我的示例应用中尝试过并且工作正常。这是我的assests文件夹app.xml中的xml
<stuff> hello </stuff>
这里是xml解析器代码:
XMLReader reader = SAXParserFactory.newInstance().newSAXParser()
.getXMLReader();
class myhanlder implements ContentHandler { //this is ur SAXXMLHandler class .. not sure u implmented which handler..
public myhanlder() {super(); }
public void getIcon() { System.out.println(" ICON " ); }
@Override //other Override methods impl ..
// ...
// ..
//..
};
myhanlder handler = new myhanlder();
reader.setContentHandler(handler);
InputStream in = this.getResources().openRawResource(R.xml.app);
reader.parse(new InputSource(in));
handler.getIcon() ;