Objective c 基于元素属性的NSXMLParser解析值
我有一个XML示例:Objective c 基于元素属性的NSXMLParser解析值,objective-c,nsxmlparser,Objective C,Nsxmlparser,我有一个XML示例: <book id="bk101"> <title>XML Developer's Guide</title> </book> <book id="bk102"> <title>Midnight Rain</title> </book> 假设结构XML(如示例中的和标记)没有子元素,并且标记中的文本没有unicode或其他特殊字符。然后,对于id为“bk101”的书籍
<book id="bk101">
<title>XML Developer's Guide</title>
</book>
<book id="bk102">
<title>Midnight Rain</title>
</book>
假设结构XML(如示例中的和标记)没有子元素,并且标记中的文本没有unicode或其他特殊字符。然后,对于id为“bk101”的书籍的控制台输出(例如“标题”值),您应该:
codeValue
声明为属性
@property (strong, nonatomic) NSString *codeValue;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
foundCharacters:
方法,如下所示:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
didEndElement:
方法,如下所示(有选择地用于并非所有标记“book”都有属性的情况):
然后使用它。假设结构XML,如示例中的和标记没有子元素,标记内的文本没有unicode或其他特殊字符。然后,对于id为“bk101”的书籍的控制台输出(例如“标题”值),您应该:
codeValue
声明为属性
@property (strong, nonatomic) NSString *codeValue;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
foundCharacters:
方法,如下所示:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
didEndElement:
方法,如下所示(有选择地用于并非所有标记“book”都有属性的情况):
然后使用它。假设结构XML,如示例中的和标记没有子元素,标记内的文本没有unicode或其他特殊字符。然后,对于id为“bk101”的书籍的控制台输出(例如“标题”值),您应该:
codeValue
声明为属性
@property (strong, nonatomic) NSString *codeValue;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
foundCharacters:
方法,如下所示:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
didEndElement:
方法,如下所示(有选择地用于并非所有标记“book”都有属性的情况):
然后使用它。假设结构XML,如示例中的和标记没有子元素,标记内的文本没有unicode或其他特殊字符。然后,对于id为“bk101”的书籍的控制台输出(例如“标题”值),您应该:
codeValue
声明为属性
@property (strong, nonatomic) NSString *codeValue;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
foundCharacters:
方法,如下所示:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"book"])
{
_codeValue = [attributeDict objectForKey:@"id"];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([_codeValue isEqualToString:@"bk101"])
{
NSLog(@"found: %@", string); // output book title here
}
}
2013-12-24 13:15:48.167 test[603:70b] {
books = {
book = (
{
"-id" = bk101;
title = "XML Developer's Guide";
},
{
"-id" = bk102;
title = "Midnight Rain";
}
);
};
}
didEndElement:
方法,如下所示(有选择地用于并非所有标记“book”都有属性的情况):
然后使用它。您可以打印AttributedIt吗?您可以打印AttributedIt吗?您可以打印AttributedIt吗?您可以打印AttributedIt吗?