0

アセットフォルダ内にcoffee.xmlというローカルxmlファイルがあります。

私は次の構造を持っています:

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

ここで、myUnits.javaファイルの入力としてcoffee.xmlファイルを指定しようとしています。

私は使用するような多くの解決策を見ました

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を介してロードされ、AssetManagerはコンテキストを介して返されます

getAssets()

方法。したがって、ゲームアクティビティでは、

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

そこから、XmlResourceParserを調べて、XMLファイルから属性/タグを抽出する必要があります。XMLファイルを反復処理する方法の良い例は、XmlPullParserページ(XmlResourceParserが実装)にあります。

(Androidが提供するパーサーではなく)SAXParserを使用する場合は、代わりに次を使用できます。

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

そして、ファイル名の代わりに、

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