0

ノード値を変更しようとしているAndroidアプリケーションがあります。

以下では、assets フォルダーから xml ファイルを取得して、必要な特定のノードを取得できます。

InputStream in_s = getApplicationContext().getAssets().open("platform.xml");
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = (Document) docBuilder.parse(in_s);

Node path = doc.getElementsByTagName("path").item(0);
path.setNodeValue(txtPath.getText().toString());

しかし、それが変換になると、私は立ち往生しました。

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer trans = transFactory.newTransformer();
trans.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult("platform.xml");
//there should be something to write to xml file in assets.. I just cant figure it out..
trans.transform(source, result);
4

2 に答える 2

0

Android リソースはすべて読み取り専用です。動的に変更または修正することはできません。リソースは読み取りのみ可能で、更新も書き込みもできません。

于 2014-02-03T08:00:28.217 に答える
0

assets フォルダーにファイルを書き込み/更新することはできません。xml ファイルをアセットから sdcard にコピーしてから、変更する必要があります。

XML を SD カードにコピーします。

String destFile = Environment.getExternalStorageDirectory().toString();
try {

        File f2 = new File(destFile);
        InputStream in = getAssets().open("file.xml");
        OutputStream out = new FileOutputStream(f2);

        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
        System.out.println("File copied.");
    } catch (FileNotFoundException ex) {
        System.out
                .println(ex.getMessage() + " in the specified directory.");
        System.exit(0);
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }

マニフェストの許可:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2014-02-03T07:57:32.910 に答える