2010-10-05 97 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 2010-10-05 06:29:52

+0

@Boldewyn ....实际上我删除了这些示例字符串的真实属性...这不是我的朋友的实际XML。 – iscavengers 2010-10-05 06:36:02

回答

1

我强烈建议使用TouchXML来进行XML解析。

我个人遇到了NSXMLParser的各种问题,最终使用了TouchXML。作品一种享受!

+0

将尝试TouchXML Alastair Pitts。 – iscavengers 2010-10-05 06:43:47

1

你应该实现以下方法: - 您可以使用 一种方法是: -

  • (无效)解析器:(的NSXMLParser *)解析器didStartElement:(的NSString *)的ElementName 的namespaceURI:(的NSString * )namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
    {
    //检查元素是否是您想要的元素。如果是,则初始化要存储值的字符串。
    if(elementName isEqualToString:@“abc”)
    {
    tempString = [[NSMutableString alloc] init];
    }
    }
  • (无效)解析器:(的NSXMLParser *)解析器foundCharacters:(的NSString *)串
    {

    [tempString appendString:string]; 
    

}
- (无效)解析器:(NSXMLParser *)解析器didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if(elementName isEqualToString:@“abc”)
{
self.StringToStore = tempString;
}
}

+0

感谢Javal,但我需要knw,StringToStore这个var会存储abc的值吗?如果我想分配属性的每个值,我的意思是,abc1,abc 2 abc3,比我高吗?感谢您的回复BTW – iscavengers 2010-10-05 08:43:28

+0

这将存储标签之间的值。我写的代码将存储标记的值,即(87C4A556-B7E5-5AE4-81FE-86BE0C6306E1)。 xml你有一个标签元素,他们不被称为属性。属性用于e。g 。这里的值和名称是属性。 – 2010-10-05 09:11:19

+0

因此对于每个标签,您只需在条件检查元素名称时添加即可。 – 2010-10-05 09:13:28