0

SAX XMLパーサーを使用して、正常に機能するXMLファイルから値を取得しています。これは私の主な活動の方法です:

public void parseXML() {

    String parsedData = "";

    try {

        Log.w("AndroidParseXMLActivity", "Start");
        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        XMLContentHandler myXMLHandler = new XMLContentHandler();
        xr.setContentHandler(myXMLHandler);

        AssetManager assetManager = getAssets();
        InputStream inputStream = null;
        try {
            inputStream = assetManager.open("calimero.xml");
        } catch (IOException e) {
            Log.e("tag", e.getMessage());
        }
        xr.parse(new InputSource(inputStream)); 

        ArrayList<Datapoint> itemsList = myXMLHandler.getItemsList();
        int datapoint_size = itemsList.size();
        String xml_names[]  = new String [datapoint_size];
        String xml_states[]  = new String [datapoint_size];
        String xml_dptIDs[] = new String [datapoint_size];
        String xml_groupadresses[]  = new String [datapoint_size];
        String xml_mainNumbers[]  = new String [datapoint_size];

        for(int i=0;i<itemsList.size();i++){
            Datapoint item = itemsList.get(i);
            parsedData = parsedData + "----->\n";
            parsedData = parsedData + "Name: " + item.getName() + "\n";
            xml_names[i] = item.getName();
            parsedData = parsedData + "stateBased: " + item.getStateBased() + "\n";
            xml_states[i] = item.getStateBased();
            parsedData = parsedData + "mainNumber: " + item.getMainNumber() + "\n";
            xml_mainNumbers[i] = item.getMainNumber();
            parsedData = parsedData + "dptID: "+ item.getDptID() + "\n";
            xml_dptIDs[i] = item.getDptID();
            parsedData = parsedData + "Groupadress: "+ item.getGroupadress() + "\n";
            xml_groupadresses[i] = item.getGroupadress();
        }
        Log.w("AndroidParseXMLActivity", "Done");
    }
    catch (Exception e) {
        Log.w("AndroidParseXMLActivity",e );
    }
    Log.w("AndroidParseXMLActivity", names[0]);
    Log.w("AndroidParseXMLActivity", mainNumbers[2]);
    Log.w("AndroidParseXMLActivity", dptIDs[3]);
    //xmlOutput.setText(parsedData);
}

メソッドの外でname、mainNumberなどの値を使用したい。しかし、私はそれを理解していません...私はこれがJavaの基本であることを知っています....助けてください、ありがとう!

4

2 に答える 2

1

クラス全体でString配列を使用する場合は、クラスで定義する必要があります。その後、変数はクラス内のすべての関数で使用できます。

    public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        StringArray testString = new StringArray();
        testString.setArray();
        testString.printArray();
    }

    static private class StringArray{
        String test[];

        public void setArray(){
            test = new String[5];
            for (int i = 0 ; i < test.length; i++){
                test[i] = "test";
            }
        }

        public void printArray(){
            for (int i = 0 ; i < test.length; i++){
                System.out.println(test[i]);
            }
        }
    }
}
于 2012-09-14T12:01:45.647 に答える
0

私は問題を解決しました。現在、戻り値としてDatapointを使用しています。

public Datapoint parseXML(){
    Datapoint item = null;

    for(){
        ...
    }

    return item;
}

そして私の主な機能で私はそれから使うことができます

item = parseXML();
String name = item.getName();
于 2012-09-14T13:45:16.980 に答える