1

我知道如何读取或解析 .xml 文件。我需要知道如何编辑这个 .xml 文件并将其保存在同一位置(手机内存/sd 卡)?

4

2 回答 2

1

我可以给它一个线索/逻辑。

假设您的 xml 文件为

<XML>
     <NAME>ABC</NAME>
     <JOB>DEV</JOB>
     ...
</XML>

现在您需要阅读此 xml 并在阅读后进行编辑,例如这将是生成的 xml 文件。

<XML>
     <NAME>XYZ</NAME>
     <JOB>DEVELOPER</JOB>
     ...
</XML>

所以为此目的,您需要同时打开两个文件连接,如下所示,

FileConnection fc1 = (FileConnection) Connector.open("<File URL>");
FileConnection fc2 = (FileConnection) Connector.open("<File URL>");

对于 fc2,您的文件名将被更改。

现在开始从第一个文件中读取字符并将它们写入第二个文件(简单的 C 语言逻辑)。您可以在任何地方进行更改,例如在解析并获取 ABC 时,将其替换为 XYZ 相同的其他字符串。

于 2012-07-16T08:26:26.327 回答
1

@Lucifer 拿出你的想法,我开发了一些可以编辑现有.XML 的东西。谢谢

OutputStream os = fc.openDataOutputStream();
                        os.write(ReadChangedXml(result).getBytes());
                        os.close();

您的对象应包含旧值

 public synchronized String ReadNChangeXml(<your object>) {
    StringBuffer buf = new StringBuffer();
    StringBuffer key = new StringBuffer();
    byte c;

    try {
         in = fc.openInputStream();
        } catch (Exception e) 
        {
        do_alert("Open failed for Change Xml.", 1000);
        }

    try {
        boolean scan = false;
        while (((c = (byte) in.read()) != -1)) {

            if (c == '>' ) {
                scan = true;
                buf.append((char) c);
                continue;
            }

            if (scan == true && c != '<') {
                key.append((char) c);
            }

            if (scan == true && c == '<') 
               {
                 scan = false;
                  if (key.toString().equalsIgnoreCase(<your object variable>))
                        buf.append(<new value>);
                  else
                     buf.append(key.toString());
               }
                buf.append((char) c);
                key = new StringBuffer();
                continue;
            }
            if (scan == false) {
                buf.append((char) c);
            }
      }

    } catch (Exception E) {
        do_alert("Read failed for Change Xml.", 1000);
    }

   return buf.toString();
}
于 2012-07-17T11:18:17.417 回答