2010-10-05 2 views
0

Это XML я получаю из Интернета:получить значения атрибутов из возвращаемой XML

<?xml version="1.0"?> 
<abc>87C4A556-B7E5-5AE4-81FE-86BE0C6306E1</abc> 
<abc2>P29077758</abc2> 
<abc3>55AGD99D</abc3> 
<abc4>147</abc4> 
<abc5>1286259226</abc5> 
<abc6>USA</abc6> 
<abc7>US</abc7> 

и использовать это, чтобы получить атрибут:

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if([elementName isEqualToString:@"a"]) 
    { 
     recordResults = FALSE; 
    // greeting.text = soapResults; 
     [soapResults release]; 
     soapResults = nil; 
    } 
} 

Что-то вроде этого, но у меня нет любая идея, как я могу получить атрибут из возвращенного xml и назначить эти возвращенные переменные в мою созданную переменную. Как я могу это сделать?

+0

Если вы действительно * получили этот «XML», вы совершенно ввернуты. Он не является корректным, и никакой истинный анализатор XML не будет его использовать. – Boldewyn

+0

@Boldewyn .... на самом деле я удалил настоящие атрибуты с этими примерами строк ... это не фактический xml мой друг. – iscavengers

ответ

1

Я настоятельно рекомендую использовать TouchXML, чтобы выполнить синтаксический анализ XML.

У меня лично были всевозможные проблемы с NSXMLParser и в итоге я использовал TouchXML. Работает!

+0

попробует TouchXML Alastair Pitts. – iscavengers

1

Вы должны реализовать следующие методы: - Один из способов вы можете использовать это: -

  • (аннулируются) анализатор: (NSXMLParser *) анализатор didStartElement: (NSString *) ELEMENTNAME NamespaceURI: (NSString *) NamespaceURI QualifiedName: (NSString *) QName атрибуты: (NSDictionary *) attributeDict
    {
    // проверить, что элемент, который вы хотите. Если он затем инициализирует строку, в которой вы хотите сохранить значение.
    if (elementName isEqualToString: @ "abc")
    {
    tempString = [[NSMutableString alloc] init];
    }
    }
  • (аннулируются) анализатор: (NSXMLParser *) анализатор foundCharacters: (NSString *) струнные
    {

    [tempString appendString:string]; 
    

}
- (Недействительными) парсер :(NSXMLParser *) parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName
{
, если (ElementName isEqualToString: @ "ABC")
{
self.StringToStore = tempString;

+0

Спасибо Javal, но мне нужно knw, StringToStore, этот var сохранит значение abc вправо? если я хочу назначить все значения атрибута, я имею в виду, abc1, abc 2 abc3, чем wat i hv? спасибо за ответ BTW – iscavengers

+0

, это сохранит значение между тегами. код, который я написал, сохранит значение tag i.e. (87C4A556-B7E5-5AE4-81FE-86BE0C6306E1). xml u r имеет элемент тега, и они не называются атрибутами. Атрибуты для e.g . здесь значение и имя являются атрибутами. –

+0

, поэтому для каждого тега вам нужно просто добавить условие проверки имени элемента. –