2016-05-02 10 views
0

Mein Problem ist, ich möchte einige Zeichen aus meiner Zeichenfolge entfernen. Meine Zeichenfolge enthält XML. Also muss ich Zeichen von einem XML-öffnenden Tag bis zu seinem schließenden Tag trimmen. Wie kann ich es tun?Wie schneidet man Zeichen von einer Position zu einer anderen Position in iOS (Objective C)?

ZB: Meine Zeichenfolge enthält die folgenden XML-Codes.

<CategoriesResponse xmlns="https://abc.defg.com/hijk"> 
    <MainCategories> 
     <CatID xsi:type="xsd:int">178</CatID> 
     <CatID xsi:type="xsd:int">150</CatID> 
     <CatID xsi:type="xsd:int">77</CatID> 
     <CatID xsi:type="xsd:int">33</CatID> 
     <CatID xsi:type="xsd:int">179</CatID> 
    </MainCategories> 
<SubCategories> 
    //some needed elements should not be trimmed. 
</SubCategories> 

ich brauche <MainCategories> aus dem Starttag trimmen Tag zu schließen </MainCategories>. Wie es geht ?? Also hier wird mein Anfangszeichen <MainCategories sein und End-Zeichen wird /MainCategories>

+1

Wie wäre es NSXMLParser helfen? – Paulw11

+0

Ich analysiere die Antwort im XML-Parser. es funktioniert gut. aber das Problem ist, dass die 'CatID's zwischen den' MainCategory' Tags unerwünscht sind. aber die 'CatIDs' in' SubCategories' werden benötigt. Wenn ich 'NSXMLParser' benutze, werden alle 'CatID's analysiert. das macht mich zu einem großen Durcheinander –

+1

Sie behalten einfach eine Markierung, die anzeigt, ob Sie innerhalb eines 'MainCategories' Tags sind oder nicht. Sie können dies aus den Aufrufen zu den Delegaten 'didStartElement' und' didEndElement' Methoden wissen – Paulw11

Antwort

1

Versuchen Sie, diese

NSString *str = @"<CategoriesResponse xmlns=\"https://abc.defg.com/hijk\"><MainCategories><CatID xsi:type=\"xsd:int\">178</CatID><CatID xsi:type=\"xsd:int\">150</CatID><CatID xsi:type=\"xsd:int\">77</CatID><CatID xsi:type=\"xsd:int\">33</CatID><CatID xsi:type=\"xsd:int\">179</CatID></MainCategories><SubCategories></SubCategories>"; 


NSRange startRange = [str rangeOfString:@"<MainCategories>"]; 
NSRange endRange = [str rangeOfString:@"</MainCategories>"]; 
NSString *replacedString = [str stringByReplacingCharactersInRange:NSMakeRange(startRange.location, (endRange.location+endRange.length)-startRange.location) withString:@""]; 
NSLog(@"%@",replacedString); 

this helps sein.

+0

oh mein Freund, es ist in swift. mache ich in Ziel c. Ich weiß nicht schnell. –

+0

oh umgerechnet auf objective c !! Vielen Dank. lass mich sehen –

+0

oh mein Gott ... oh es hat funktioniert .. es hat funktioniert. Danke, Mann. wenn 5 upvotes wo möglich, werde ich dir geben 5. ich war vermasselt auf diese –

1

Try unten Code:

NSString *[email protected]"<CategoriesResponse xmlns=\"https://abc.defg.com/hijk\"><MainCategories><CatID xsi:type=\"xsd:int\">178</CatID><CatID xsi:type=\"xsd:int\">150</CatID><CatID xsi:type=\"xsd:int\">77</CatID><CatID xsi:type=\"xsd:int\">33</CatID><CatID xsi:type=\"xsd:int\">179</CatID></MainCategories><SubCategories></SubCategories>"; 

         strXml=[strXml stringByReplacingOccurrencesOfString:@"<MainCategories>" withString:@"<MainCategories"]; 

         strXml=[strXml stringByReplacingOccurrencesOfString:@"</MainCategories>" withString:@"/MainCategories>"]; 

         NSLog(@"%@",strXml); 

Hope it :)

+0

es half. Aber eigentlich wollte ich diese Zeichen (CatID-Tags) zwischen den Tags (MainCategories &/MainCategories) inklusive dieses Tags entfernen. –

Verwandte Themen