0

私はAndroidが初めてで、Androidのxmlファイルとの間でいくつかの情報を読み書きしようとしています。DOMパーサーを使用してそのようなことを行うと可能になると思いました...アプリケーションの開始時にファイルを読み取ってデータを取得し、アプリケーションが終了して構成の変更を保存する前に保存しようとしています。raw/xml からファイルを読み取る方法を理解しましたが、変更された xml をここに保存するのは本当に面倒 (または不可能) のようです... 間違ったアプローチを取っているのかもしれませんが、何らかの方法で変更できるはずだと思いますAndroid の内部 xml ファイル。それについてどうやって行くのですか?

4

3 に答える 3

0

Android app.u に保存されている xml は、デバイスにアプリをインストールして変更するときにそのファイルが必要ですcant modify。その場合、Dom パーサーを使用して、デバイスの sdcard/内部ストレージから xml ファイルを読み書きできます。xml foldercopysdcard/internal storage

于 2013-04-24T09:52:48.460 に答える
0

@ user370305 そうです!!

単純なロジックは、実行時にストレージ (raw、asset、layout など) の内部でファイルを作成できないということです。そのため、「write_external_storage」権限を与えることで、外部で別のファイルを作成できます。その後、読み書きができます。

ここに例があります

   public void readXML() throws IOException{ 

         //get the xml file from the raw folder
        InputStream is = getResources().openRawResource(
                    R.raw. config );

        Resources r = getResources();
        AssetManager assetManager = r .getAssets();

         //then write the dummy file
        File f = new File(Environment.getExternalStorageDirectory(), "dummy.xml" );
        OutputStream os = new FileOutputStream(f , true);



         final int buffer_size = 1024 * 1024;
         try
        {
            byte [] bytes = new byte [buffer_size ];
            for (;;)
            {
                int count = is.read( bytes, 0, buffer_size );
                if (count == -1)
                    break ;
                os.write( bytes , 0, count );
            }
            is.close();
            os.close();
        }
         catch (Exception ex )
        {
            ex.printStackTrace();
        }


         //then parse it
                    parseConfigXML( f);

  }

   public String parseConfigXML(File configXML ) {

        XmlPullParser xpp = null ;
         String httpUrl= "";
        FileInputStream fis ;
        XmlPullParserFactory factory = null ;
         try {

               fis = new FileInputStream( configXML);
               factory = XmlPullParserFactory.newInstance();
               factory .setNamespaceAware( true);
               xpp = factory .newPullParser();
               xpp .setInput( new InputStreamReader( fis));

               int eventType = xpp.getEventType();
               while (eventType != XmlPullParser. END_DOCUMENT) {
                     if (eventType == XmlPullParser. START_DOCUMENT) {

                    } else if (eventType == XmlPullParser. START_TAG) {

                    } else if (eventType == XmlPullParser. END_TAG) {

                    } else if (eventType == XmlPullParser. TEXT) {

                           httpUrl += xpp .getText().replace( "\n", "" );

                    }
                     eventType = xpp .next();
              }
        } catch (FileNotFoundException e1 ) {
               // TODO Auto-generated catch block
               e1.printStackTrace();
        } catch (XmlPullParserException e ) {
               // TODO Auto-generated catch block
               e.printStackTrace();
        } catch (IOException e ) {
               // TODO Auto-generated catch block
               e.printStackTrace();
        }

         return httpUrl .trim().replace( "\n", "" );
  }
于 2014-11-14T17:14:23.767 に答える
0

raw/xmlファイル ディレクトリを変更または更新することはできません。Android/resディレクトリは読み取り専用です。したがって、ファイルからの読み取りのみが可能であり、書き戻しは許可されていません。( Android .apk ファイルには読み取り専用権限があるため) .

于 2013-04-24T09:45:32.830 に答える