我有一个类似
的xml文件<html>
<head style="">
<style type="text/css"></style>
</head>
<body style="">current=yes<!--?xml version="1.0" encoding="ISO-8859-1"?-->
<results>
... (Some tags and content)
</results>
</body>
</html>
我的didStartElement
方法根本没有被调用。由于body
标记之后的文字,它会崩溃吗?如果是这样,有没有办法在NSXMLParser
到达之前更改应用中的文件?
解析器在这里初始化:
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
和
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
NSLog(@"Element: %@", elementName);
...
}
不输出任何元素名称。
答案 0 :(得分:0)
解决方案是在
之前有文字<!--?xml version="1.0" encoding="ISO-8859-1"?-->
标签。
另一方面,前面的标记(html
,head
和body
)不属于文件,但是由浏览器添加以显示文件。通过将NSData
转换为NSString
变量并记录它,可以创建正在解析的内容的精确输出:
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
NSString *strData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"XMLData: %@", strData);
输出类似
的内容current=yes<!--?xml version="1.0" encoding="ISO-8859-1"?-->
<results>
... (Some tags and content)
</results>
并且从该输出中很容易看出存在导致错误的初始文本。