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