我在资产文件夹中有一个名为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作为标记行的输入。
答案 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);