3

GDataXML を使用して xml ファイルを解析するのは初めてです。ファイル内のいくつかの中間 xml タグの値を変更し、それをファイルに書き戻したいと考えています。

例えば。次のファイルがあります..

<sheetData>
 <row r="7" spans="5:6" x14ac:dyDescent="0.25">
  <c r="E7" t="s">
   <v>0</v> 
  </c>
  <c r="F7" t="s">
    <v>1</v> 
  </c>
 </row>
 <row r="8" spans="5:6" x14ac:dyDescent="0.25">
  <c r="E8" t="s">
   <v>2</v> 
  </c>
  <c r="F8">
   <v>9890234654</v> 
  </c>
 </row>
</sheetData>

電話番号 ('9890234654')の値を、たとえば 9503452366に更新したいと思います。iOSでGDataXMLを使用してそれを行うにはどうすればよいですか?(私はxcode 4.3.2を使用しています)

元の xml ツリーでタグ値を直接置き換える方法が見つかりませんでした。

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

1

XML ファイル/データを作成しましたか? 追跡しやすいように、ノードの名前空間を配置することをお勧めします。例えば:

<sheetData xmlns="http://mypage.net/sheetdata">
  <row r="7" spans="5:6" x14ac:dyDescent="0.25" xmlns="http://mypage.net/r7">
    <c r="E7" t="s">
      <v>0</v> 
    </c>
    <c r="F7" t="s">
      <v>1</v> 
    </c>
  </row>
  <row r="8" spans="5:6" x14ac:dyDescent="0.25" xmlns="http://mypage.net/r8">
    <c r="E8" t="s">
      <v>2</v> 
    </c>
    <c r="F8">
      <v>9890234654</v> 
    </c>
  </row>
</sheetData>

名前空間を配置したら、値を更新するサンプル コードを次に示します。

//The sample xml data is assigned to this NSData object: myXMLData
//Create a GDataXMLDocument
NSError *error = nil;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:myXMLData options:0 error:&error];

//build a namespace dictionary
NSDictionary *ns = [NSDictionary dictionaryWithObjectsAndKeys:@"http://mypage.net/sheetdata", @"sd", @"http://mypage.net/r7", @"r7", "http://mypage.net/r8", @"r8", nil];

//Now here are some codes to change the value
NSError *err = nil;
GDataXMLNode *row8 = [[doc nodesForXPath:@"//r8:row" namespace:ns error:&err] objectAtIndex:0];
//Need to change value of second node
GDataXMLNode *f8 = [[row8 children] objectAtIndex:1];
GDataXMLNode *f8v = [[f8 children] objectAtIndex:0];
f8v.stringValue = @"9503452366";

//doc now has the xml with updated value. Just get the XML data, doc.XMLData, from it then convert it as you please
于 2012-09-20T09:10:52.703 に答える