iphone:的NSXMLParser无法识别HTML特殊实体&
我根本无法获得的NSXMLParser承认&iphone:的NSXMLParser无法识别HTML特殊实体&
这里是我的XML:
<?xml version="1.1" encoding="UTF-8"?>
<root>
<myURL>http://www.mywebsite.com/info?id=32&page=5</myURL>>
</root>
这里是我的解析代码:
-(void)getXml {
NSURL *xmlurl = [[NSURL alloc] initWithString:@"http://www.mywebsite.com/myxml.xml"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlurl];
[xmlParser setDelegate:self];
[xmlParser parse];
[xmlParser release];
[dataurl release];
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSLog(@"Parser Error: %@", parseError);
}
- (void)parser:(NSXMLParser *)parser validationErrorOccurred:(NSError *)validError {
NSLog(@"Parser validation Error: %@", validError);
}
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSLog(@"Parser started");
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
NSLog(@"Found key: %@", elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(@"Found Element: %@", string);
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
NSLog("done"):
}
这是我的输出:
Found key: root
Found key: myURL
Found element: http://www.mywebsite.com/info?id=32
Found element: page=5
Found element:
Found key: myURL
解析器不能正确识别&并正在拆分我的网址。 我在这个问题上看过很多Stack问题,但没有一个帮助过,我也阅读了NSXMLParser上的Apple文档。我在这里错过了什么吗?
我与iOS 5.0建设到iPhone 4
按照NSXMLParserDelegate documentation:
解析器对象可以发送委托几个 解析器:foundCharacters:消息,报告的 人物元件。因为字符串可能只是当前元素的总字符内容的一部分,所以您应该将其附加到字符当前的 堆积中,直到元素更改。
所以使用通常的模式是保持附加到一个临时字符串,直至到达元素的末尾:
.H
@property (nonatomic,retain) NSMutableString *tempString;
.M
@synthesize tempString;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
self.tempString = @"";
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[self.tempString appendString:string];
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
// do something with self.tempString
}
谢谢,这是对解析器过程的深入了解,但是使用它有问题,可能是由于Xcode 4.5.1的功能
事实证明,将一个NSString像@“”分配给一个NSMutableString使它不可变。相反,设定初始值的tempString我不得不使用
self.tempString = [[NSMutableString alloc] initWithString: @""];
和解析器:foundCharacters方法变得
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[self.tempString appendString:string];
currentNodeContent = (NSMutableString*) [self.tempString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
但这是一个问题解决了。谢谢。
什么是currentNodeContent? – 2013-02-15 21:26:03
是的!谢谢一个包:) – Zigglzworth 2012-02-15 21:34:22