Java xml文件写入和解析代码有什么问题

Java xml文件写入和解析代码有什么问题,java,android,xml,Java,Android,Xml,我正在尝试将用户名和密码从EditTextFields写入xml文件。在mainActivity中,我获取EditTextField值并将其保存在xml文件中,此外,如果该xml文件之前已经存储了任何数据,那么我希望这些数据也存在。在readActivity中,我试图从xml中读取数据 以下是MainActivity.java的代码: 以及ReadActivity.java的代码: 这是第一次很好用。无论我输入多少条目,它都存储在xml中。但当我转到ReadActivity时,它应该在textV

我正在尝试将用户名和密码从EditTextFields写入xml文件。在mainActivity中,我获取EditTextField值并将其保存在xml文件中,此外,如果该xml文件之前已经存储了任何数据,那么我希望这些数据也存在。在readActivity中,我试图从xml中读取数据

以下是MainActivity.java的代码:

以及ReadActivity.java的代码:


这是第一次很好用。无论我输入多少条目,它都存储在xml中。但当我转到ReadActivity时,它应该在textView txtv中显示arrayList大小,但事实并非如此。同样,当我返回MainActivity时,它不再存储以前的值,只保留EditTextBox中最近的值。知道我哪里做错了吗?

为什么要初始化两次Memo aLastMemo=new Memo;???如果我让它在类级别上工作,而不是不工作,那么我已经编辑了代码:-。如果name.equalsIgnoreCaseuserName{aLastMemo=new Memo;aLastMemo.set_keyparser.nextText;strm+=parser.nextText;},请帮助我使它工作起来?在这里谈论getInfoFromxmlHere每次获取标记时创建新对象?
 public class MainActivity extends Activity 
{

EditText txtKey;
EditText txtValue;
Button btn;

Memo aLastMemo ; //
ArrayList<Memo> memos=new ArrayList<Memo>();

final static String xmlFile="userMemo09.xml";
File file ;

static int i;

  @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtKey = (EditText)findViewById(R.id.txtvwKey);
    txtValue = (EditText)findViewById(R.id.txtvwValue);
    btn = (Button)findViewById(R.id.btnSave);

 }

public void saveClk(View v)
  throws SAXException, IOException
 {
     file = getBaseContext().getFileStreamPath(xmlFile);
 if (file.exists()) 
     {
       // txtKey.setText("Exists");
        getPreviousData();
        String iS = String.valueOf(i++);
        Log.d("insideSave", iS);
     }


String key= txtKey.getText().toString();
String val= txtValue.getText().toString();

     aLastMemo = new Memo(key,val);
    memos.add(aLastMemo);

 writeNewdata(memos);
   }


private void getPreviousData()
{
 XmlPullParser parser = Xml.newPullParser();

    try {
        InputStream fIn = getApplicationContext().openFileInput(xmlFile);
        InputStreamReader isr = new InputStreamReader(fIn);
        parser.setInput(isr);

        int eventType = parser.getEventType();

        boolean done = false;
        while (eventType != XmlPullParser.END_DOCUMENT && !done){
            String name = null;
            switch (eventType){
                case XmlPullParser.START_DOCUMENT:
                    break;
                case XmlPullParser.START_TAG:
                    name = parser.getName();

                    if (name.equalsIgnoreCase("userName"))
                         { 
                           aLastMemo = new Memo();
                           aLastMemo.set_key(parser.nextText()); } 
                    if (name.equalsIgnoreCase("password"))
                         { aLastMemo.set_value(parser.nextText()); }
                    break;
                case XmlPullParser.END_TAG:
                    name = parser.getName();
                    if (name.equalsIgnoreCase("password") && aLastMemo != null)
                    {
                        memos.add(aLastMemo);
                        String iS = String.valueOf(i++);
                        Log.d("insideSaveMethod", iS);
                    } 
                   break;
                }
            eventType = parser.next();
            }
        fIn.close();
    } catch (FileNotFoundException e) {
        // TODO
    } catch (IOException e) {
        // TODO
    } catch (Exception e){
        // TODO
    }
    //txtv.setText(strn);
}

 private void writeNewdata(ArrayList<Memo> memoArg)
{
   try {
        FileOutputStream fileos= getApplicationContext().openFileOutput(xmlFile, Context.MODE_PRIVATE);

        XmlSerializer xmlSerializer = Xml.newSerializer();              
        StringWriter writer = new StringWriter();
        xmlSerializer.setOutput(writer);
        xmlSerializer.startDocument("UTF-8",true);
        xmlSerializer.startTag(null, "userData");

        for(Memo mm: memoArg)
            { xmlSerializer.startTag(null, "userName");
                 xmlSerializer.text(mm.get_key());
              xmlSerializer.endTag(null,"userName");

              xmlSerializer.startTag(null,"password");
                xmlSerializer.text(mm.get_value());
              xmlSerializer.endTag(null, "password"); 
            }

        xmlSerializer.endTag(null, "userData");
        xmlSerializer.endDocument();
        xmlSerializer.flush();
        String dataWrite=writer.toString();
        fileos.write(dataWrite.getBytes());
        fileos.flush();
        fileos.close();
        } 


        catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
  }
 }
public class ReadActivity extends Activity {
TextView txtv;
Spinner spin;
 Button btn;
private SpinAdapter adapter;

ArrayList<Memo> memos = new ArrayList<Memo>();

Memo aLastMemo ;
final String xmlFile="userMemo09.xml";


@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_read);
    // Show the Up button in the action bar.
    setupActionBar();

    spin = (Spinner)findViewById(R.id.spinner1);
    txtv = (TextView)findViewById(R.id.txtvwResult);
    btn = (Button)findViewById(R.id.btnread);
 }

public void btnreadClk(View view)
{ 
    getInfoFromxml();
}

private void getInfoFromxml()
{

       String strm="";

       XmlPullParser parser = Xml.newPullParser();


        try {
            InputStream fIn = getApplicationContext().openFileInput(xmlFile);

            InputStreamReader isr = new InputStreamReader(fIn);
            parser.setInput(isr);

            int eventType = parser.getEventType();

            //boolean done = false;
            while (eventType != XmlPullParser.END_DOCUMENT){
                String name = null;
                switch (eventType){
                    case XmlPullParser.START_DOCUMENT:
                        break;
                    case XmlPullParser.START_TAG:
                        name = parser.getName();

                        if (name.equalsIgnoreCase("userName"))
                             { 
                               aLastMemo = new Memo();
                               aLastMemo.set_key(parser.nextText()); 
                               strm +=parser.nextText(); 
                               } 
                        if (name.equalsIgnoreCase("password"))
                             { aLastMemo.set_value(parser.nextText());
                             strm +=parser.nextText();
                             }
                        break;
                    case XmlPullParser.END_TAG:
                        name = parser.getName();
                        if (name.equalsIgnoreCase("password") && aLastMemo != null)
                        {
                            memos.add(aLastMemo);
                        } 

                        break;
                    }
                eventType = parser.next();
                }
            fIn.close();
        } catch (FileNotFoundException e) {
            // TODO
        } catch (IOException e) {
            // TODO
        } catch (Exception e){
            // TODO
        }

    txtv.setText("Size: "+ String.valueOf(memos.size()) + strm);

   }
}