将本地xml文件作为android中java类的输入

时间:2013-02-23 23:27:31

标签: java android xml file

我在资产文件夹中有一个名为coffee.xml的本地xml文件。

我有以下结构:

1 activity called Game.java
1 class called Units.java
1 class called MyUnit.java which extends Units.java

现在,我正在尝试将coffee.xml文件作为MyUnits.java文件中的输入。

我看到很多解决方案,比如使用

getResources() OR
classLoader() etc...

没有任何作用。我也尝试过直接路径“C:\ Users \ MyName \ Workspace ..... coffee.xml” 那也行不通。我对如何将此文件作为输入感到困惑。

请指教。谢谢! (堆栈溢出让这些自动代码检测功能变得烦人......这种功能很糟糕。) ======================更多信息========================

在MyUnit.java的构造函数中,我正在调用一个名为retrieve()的函数

这个retrive()函数基本上接受了coffee.xml文件的输入,并从节点中检索所有信息并将其分配给MyUnit.java类对象。我正在使用SAXParser。

它基本都像

try {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();

        DefaultHandler handler = new DefaultHandler() {
        public void startElement(String uri, String localName,String qName, 
                    Attributes attributes) throws SAXException {
            ....

         }
         };

         saxParser.parse(<your XML File>, handler); <------Problem here
    } catch (Exception e) {
           e.printStackTrace();
        }

我需要知道,如何将我的本地文件coffee.xml作为标记行的输入。

1 个答案:

答案 0 :(得分:0)

资产通过AssetManager加载,通过Context's

返回
getAssets()

方法。因此,在您的游戏活动中,您可以致电

AssetManager assetManager = getAssets();
XmlResourceParser xmlParser = assetManager.openXmlResourceParser("coffee.xml");
MyUnit unit = new MyUnit(xmlParser);

从那里开始,您需要阅读XmlResourceParser以从XML文件中提取属性/标签。有关如何遍历XML文件的一个很好的示例可以在XmlPullParser页面上找到(XmlResourceParser实现)。

在使用SAXParser(而不是Android提供的解析器)的情况下,您可以使用:

AssetManager assetManager = getAssets();
InputStream is = assetManager.open("coffee.xml");
MyUnit unit = new MyUnit(is);

然后使用

代替您的文件名
saxParser.parse(is, handler);