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>

そのため、以下のように 2 つのファイル接続を同時に開く必要があります。

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

fc2 の場合、ファイル名が変更されます。

ここで、最初のファイルから文字の読み取りを開始し、2 番目のファイルに書き込みます (単純な 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 に答える