将getXml()转换为SAX Parser的InputStream

时间:2014-02-17 09:15:57

标签: android xml inputstream

我从资产中获取文件。

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

1 个答案:

答案 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() ;