Iphone 使用NSXMLParser解析XML文件-获取值
我有一个XML文件,其中包含一些我想使用的数据:Iphone 使用NSXMLParser解析XML文件-获取值,iphone,objective-c,xml,ios,nsxmlparser,Iphone,Objective C,Xml,Ios,Nsxmlparser,我有一个XML文件,其中包含一些我想使用的数据: <?xml version="1.0" encoding="UTF-8" ?> <items> <item name="product" price="19.95" where="store"> This is the first product. </item> <item name="product2" price="39.95" where="online"> This is
<?xml version="1.0" encoding="UTF-8" ?>
<items>
<item name="product" price="19.95" where="store">
This is the first product.
</item>
<item name="product2" price="39.95" where="online">
This is the second product.
</item>
<item name="product3" price="99.95" where="garagesale">
This is the third product.
</item>
</items>
这是第一个产品。
这是第二种产品。
这是第三种产品。
如果我制作了4个数组,一个用于名称,一个用于价格,一个用于购买地点,一个用于描述,我如何将数据放入数组中
我想使用NSXMLParser,但无法获取名称
、价格
、位置
或描述
我一直在想怎么做
>任何帮助都有帮助。 您必须将项目标记字典作为数组和三标记(名称、价格和位置)作为索引0.,1,2中的对象。首先,您需要创建一个进行解析的对象。它将恢复实例,将自身设置为解析器的代理,然后调用解析消息。它还可以负责存储四个结果数组:
NSXMLParser * parser = [[NSXMLParser alloc] initWithData:_data];
[parser setDelegate:self];
BOOL result = [parser parse];
您最感兴趣在委托对象中实现的消息是。这家伙会为XML文件中的每个元素调用。在此回调中,您可以将名称、价格和位置属性添加到各自的数组中
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
// just do this for item elements
if(![elementName isEqual:@"item"])
return;
// then you just need to grab each of your attributes
NSString * name = [attributeDict objectForKey:@"name"];
// ... get the other attributes
// when we have our various attributes, you can add them to your arrays
[m_NameArray addObject:name];
// ... same for the other arrays
}
用下面的方法
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"item"]) {
NSString *name=[attributeDict objectForKey:@"name"];
NSString *price=[attributeDict objectForKey:@"price"];
NSString *where=[attributeDict objectForKey:@"where"];
}
}
要获取标记之间的值(例如“这是第一个产品”),您可以重写-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString*)string您是否已阅读?或的可能重复项。这是一个很好的教程,但有一点我没有得到帮助。您能告诉我如何读取字符串“这是第一个产品”吗?谢谢,我现在对NSXMLParser有了一些了解。@jack greenhill没问题:)您能详细说明一下如何执行吗?我有一个确切的要求,即获取标签之间的值。