Ich bin Parsen einige HTML mit NSXMLParser und es trifft einen Parser-Fehler jedes Mal, wenn es ein kaufmännisches Anführungszeichen begegnet. Ich könnte Ampersands herausfiltern, bevor ich es parsen, aber ich würde lieber alles parsen, was da ist.
Es gibt mir Fehler 68, NSXMLParserNAMERequiredError: Name ist erforderlich.
Meine Vermutung ist, dass es sich um ein Problem mit dem Zeichensatz handelt. Ich bin ein wenig verschwommen auf der Welt der Zeichensätze, so dass ich denke, meine Unwissenheit ist mir in den Hintern beißen. Die Quelle HTML verwendet Zeichensatz iso-8859-1, so dass ich diesen Code verwenden, um den Parser zu initialisieren:
NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease];
NSData *dataEncoded = [[dataString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] autorelease];
NSXMLParser *theParser = [[NSXMLParser alloc] initWithData:dataEncoded];
Irgendwelche Ideen?
2 Stimmen
Sie parsen HTML mit einem XML-Parser? Wie soll das jemals funktionieren? (Es sei denn, es handelt sich um wohlgeformtes XHTML, das nicht den HTML-Entity-Satz verwendet.) So oder so ist ein einfaches kaufmännisches Und sowohl in HTML als auch in XML ungültig, so dass Sie einen Parser für echtes gebrochenes HTML suchen müssten, was eine viel, viel schwierigere Aufgabe ist als das Parsen von XML.