2012-12-12 232 views
0

我想用客觀C對例如一些行動 修改XML屬性,我對屏幕按鈕,我的XML標記是修改屬性

MYNODE ATTRIBUTE1 =「」 attribute2 =「」屬性3 =「」 /mynode

如果屬性3的初始值爲NO,在輕敲按鈕上我想將其更改爲YES並將其寫入到項目目錄中的xml文件中。 請幫助我,如果有人知道這一點。 我曾嘗試使用GDataXML addattribute方法,但無法修改標記。

+0

發佈一些代碼並解釋它失敗的位置 –

+0

GDataXMLElement * node = [GDataXMLNode elementwithName:@「mynode」]; GDataXMLElement * attribute = [GDataXMLNode attributewithName:@「attribute3 stringValue:@」Yes「]; [node addAttribute:attribute];在此之後,我正在使用writeToFile自動寫入xmlfile。 –

回答

2

無法編輯Objective-c中的XML文件。如果你想這樣做,那麼你需要創建自己的XML文件,或者你可以將標籤附加到現有的XML。 請參考下面的代碼,在其中創建我自己的xml以附加圖像的字節數組&,並將其添加到原始xml中。

//Encode all the data and get the XML string 
      NSString *theXML = [[NSString alloc] 
           initWithBytes: [clipSvgData bytes] 
           length:[clipSvgData length] 
           encoding:NSUTF8StringEncoding]; 

      //Returns the substring of an main xml file by excluding the extra xml tags 
      NSString *startTag = @"<svg"; 
      NSString *endTag = @"</svg>"; 
      NSString *responseString; 

      NSScanner *scanner = [[NSScanner alloc] initWithString:theXML]; 
      [scanner scanUpToString:startTag intoString:nil]; 
      scanner.scanLocation += [startTag length]; 
      [scanner scanUpToString:endTag intoString:&responseString]; 
      [scanner release]; 

      //Remove the SVG tag from main xml 
      NSString *startTag1 = @">"; 
      NSString *endTag1 = @"</svg>"; 
      NSString *responseString1; 

      NSScanner *scanner1 = [[NSScanner alloc] initWithString:[NSString stringWithFormat:@"<svg %@ </svg>",responseString]]; 
      [scanner1 scanUpToString:startTag1 intoString:nil]; 
      scanner1.scanLocation += [startTag1 length]; 
      [scanner1 scanUpToString:endTag1 intoString:&responseString1]; 
      [scanner1 release]; 

    NSString *strSVGNode = [NSString stringWithFormat:@"<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"%fpx\" y=\"%fpx\" width=\"%fpx\" height=\"%fpx\" viewBox=\"0 0 141.73 141.73\" enable-background=\"new 0 0 141.73 141.73\" xml:space=\"preserve\" preserveAspectRatio=\"none\">", imgXPos, imgYPos, imgWidth, imgHeight]; 

    NSString *strClipXml = [NSString stringWithFormat:@"%@ %@ </svg></g>",strSVGNode ,responseString1]; 

    //Add the created SVG as new node in main SVG file. 
    GDataXMLNode *clipNode = [GDataXMLNode textWithStringValue:[NSString stringWithFormat:@"%@",strClipXml]]; 
    [xmlDocument.rootElement addChild:clipNode]; 

您可以根據您的要求對其進行修改。

+0

謝謝,我會試一試 –

+0

確定您可以嘗試這個&讓我知道你是否面臨任何問題。 – Girish