آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خواندن و نوشتن در فایل xml

توفیقی مشهود  12 سال پیش  12 سال پیش
0 0

با سلام من یه فایل xml دارم که تو پوشه assets ذخیره کردم میتونم از رو فایل بخونم  از طریق xmlpullparserولی وقتی تغییر میدم تو فایل ذخیره نمیشه خیلی سرچ کردم و امتحان کردم نمیشه کمکم کنید خواهشا

   public String readFeed(InputStream is) throws XmlPullParserException, IOException {
XmlPullParserFactory factory;
XmlPullParser parser = null;

factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();

parser.setInput(is, null);
String dbvar;
dbvar = new String();

int eventType = parser.getEventType();
Log.i("event", "" + eventType);

while (eventType != XmlPullParser.END_DOCUMENT)
{
String tagname = parser.getName();

switch (eventType)
{
case XmlPullParser.START_TAG:

if (tagname.equalsIgnoreCase("dbxml")) {
// create a new instance of Student
dbxml = new dbxml();
}
break;

case XmlPullParser.TEXT:
text = parser.getText();
break;

case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("dbxml")) {
// add Student object to list
// students.add(Student);
// Student.(text);
}
else if (tagname.equalsIgnoreCase("server"))
{
dbxml.setServer(text);
Log.i("server", tagname);
}
else if (tagname.equalsIgnoreCase("db"))
{
dbxml.setDb(text);
Log.i("db", tagname);
}
else if (tagname.equalsIgnoreCase("user"))
{
dbxml.setUser(text);
Log.i("user", tagname);
}
else if (tagname.equalsIgnoreCase("pass"))
{
dbxml.setPass(text);
Log.i("pass", tagname);
}

break;

default:
break;
}
eventType = parser.next();
}

return dbvar;
}
   try {
// XmlPullParser parser = null;
xpp = new XMLPullParserHandle();
xpp.readFeed(getAssets().open("database.xml"));
  String newxmlfile = "database.xml";
//Log.i("dir", "" + outfilename);

try {
FileOutputStream fileos = openFileOutput(newxmlfile + "database.xml", Context.MODE_WORLD_WRITEABLE);
Log.i("write", "" + fileos);
XmlSerializer xmlSerializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
xmlSerializer.setOutput(writer);
xmlSerializer.startDocument("UTF-8", true);
xmlSerializer.startTag("", "dbvar");
xmlSerializer.startTag("", "dbxml");
xmlSerializer.startTag("", "server");
xmlSerializer.text(sqldb.server);
Log.i("write", sqldb.server);
xmlSerializer.endTag("", "server");
xmlSerializer.startTag("", "db");
xmlSerializer.text(sqldb.db);
Log.i("write", sqldb.db);
xmlSerializer.endTag("", "db");
xmlSerializer.startTag("", "user");
xmlSerializer.text(sqldb.user);
Log.i("write", sqldb.user);
xmlSerializer.endTag("", "user");
xmlSerializer.startTag("", "pass");
xmlSerializer.text(sqldb.pass);
Log.i("write", sqldb.pass);
xmlSerializer.endTag("", "pass");
xmlSerializer.endTag("", "dbxml");
xmlSerializer.endTag("", "dbvar");
xmlSerializer.endDocument();
xmlSerializer.flush();
String dataWrite = writer.toString();
fileos.write(dataWrite.getBytes());
Log.i("writeinfile", "" + dataWrite.getBytes());
fileos.close();
xpp.readFeed(getAssets().open("database.xml"));
}

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();
}
catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 logcat
08-12 10:44:42.651: I/server(6575): server
08-12 10:44:42.651: I/db(6575): db
08-12 10:44:42.661: I/user(6575): user
08-12 10:44:42.661: I/pass(6575): pass
08-12 10:44:42.661: I/xppkjnfdlka(6575): 10.0.2.2saa
08-12 10:44:42.661: I/LOG(6575): sql_server: 10.0.2.2, sql_db: SAHBA sql_user:sasql_pass123
08-12 10:44:42.671: I/write(6575): java.io.FileOutputStream@44f35f78
08-12 10:44:42.711: I/write(6575): 10.0.2.2
08-12 10:44:42.711: I/write(6575): SAHBA
08-12 10:44:42.711: I/write(6575): sa
08-12 10:44:42.711: I/write(6575): 123
08-12 10:44:42.711: I/writeinfile(6575): [B@44f81b98

0 0
سوالتون خیلی جزئی هست ، ممکنه خیلی ها از جمله من با اون xml parser کار نکرده باشند ، پس اگه مشکلتون در نوشتن فایل یا خواندن مقدار خاصی هست ، اون رو مطرح کنید ، در ضمن آموزش rss Reader استاد رو دیدید ؟! (12 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
توفیقی مشهود  12 سال پیش
0 0

فایل xml من ابدیت نمیشه با اینکه دستورات نوشتن من درست هست !!!نه ندیدم میشه جلسه چندم؟

0 0
مشکل اینجاست که شما در پوشه assets میخوای بنویسی و فکر نکنم این مقدور باشه میتونی فایل رو در حافظه کپی کنی و از اونجا خواندن و نوشتن رو انجام بدی (12 سال پیش)
0 0
منظورتون درون extenal memory بنویسم میشه یه راهنمایی کنید؟ (12 سال پیش)
0 0
این کارو هم انجام دادم java.lang.IllegalArgumentException: File /mnt/sdcard/xml-testdatabase.xml contains a path separator این خطا رو میده نتونستم حلش کنم!! (12 سال پیش)
0 0
java.lang.IllegalArgumentException: File /mnt/sdcard/xml-testdatabase.xml contains a path separator (12 سال پیش)
0 0
لینک (12 سال پیش)
0 0
خیلی ببخشید من رمز عبور این فایل رو نمیبینم یا پیدا نمیکنم !!! (12 سال پیش)
0 0
بیشتر دقت کنید ! ، آخرین بخش اون لینک رمز عبور فایل های فشرده هست :) (12 سال پیش)
0 0
ببخشید من اگه بخوام اطلاعات یوزر و پسورد دیتابیس رو در xml ذخیره کنم که اگه زمانی پسورد دیتابیس تغییر کرد همون مفهومی که تو برنامه های تحت ویندوز و اس کیوال سرور هست که بعدا در xml تغییر بدیم .... آیا این طور مفهومی هم برا اپلیکیشن های موبایل هست یا نیاز هست که این کارو انجام بدم اگه اپلیکیشن رو نوشتم چطوری اون کاربر میتونه این تنظیمات رو انجام بده که پسورد دیتابیس تغییر کرده میدونم خیلی سوالم رو بد پرسیدم ولی .... (12 سال پیش)
0 0
خواهش میکنم ، اولا که اگه از بانک SQLite استفاده می کنید ، به طور پیشفرض قابلیت استفاده از پسورد رو نداره ، اگر قصد ذخیره کردن مقدار های تکی رو دارید ، باید از xml استفاده کنید ، اما نه xml ای که خودتون ساختید ، بلکه اندورید خودش قابلیت ذخیره در xml رو با استفاده از prefrence ها که استاد آموزش دادند ، داره ( در سر فصل ها بگردید ، نگید کدم بخش ! ) اما چون این حالت امن نیست و اگه گوشی روت باشه میشه به این مقدار ها درسترسی داشت ، پس بهتره اطلاعات حساس رو به صورت کد شده ذخیره کرد ، راحت ترین روش های کد کردن پسورد MD5 یا SHA1 هست ، در موردشون تحقیق کنید :) (12 سال پیش)
0 0
ممنون آخه من به دیتابیس اس کیو ال سرور وصل میشم و فایل xml رو در sdcard ساختم بعد کاربر اطلاعات کانکت شدن به دیتابیس رو وارد میکنه و در xml ذخیره میشه و بعد از فایل خونده میشه و مراحل کانکت شدن به دیتابیس انجام میگیره این طوری درسته؟ (12 سال پیش)
0 0
یکم امنیت برنامه زیر سوال هست ، آموزش Shared Prefrences رو ببینید :) (12 سال پیش)
0 0
ممنون لطف کردین (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .