0

我在 assets 文件夹中有一个名为 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 作为标记行的输入。

4

1 回答 1

0

资产通过 AssetManager 加载,后者通过 Context 的返回

getAssets()

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

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

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

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

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

然后代替您的文件名,使用

saxParser.parse(is, handler);
于 2013-02-23T23:50:04.203 回答