2010-12-19 5 views
0

Ich versuche, den HTML, der unten präsentiert wird, mit TouchXML zu analysieren, aber es stürzt ab, wenn ich versuche, bestimmte Attribute zu extrahieren. Ich bin völlig neu in der Welt der Parser, also entschuldige ich mich dafür, ein kompletter Idiot zu sein. Ich brauche Hilfe, um diesen HTML zu analysieren. Was ich versuche zu erreichen ist, jedes Attribut und Wert oder was nicht zu analysieren und sie in eine Zeichenkette zu kopieren. Ich habe versucht, einen guten Parser zu finden, um HTML zu analysieren, und ich glaube, dass TouchXML das Beste ist, was ich wegen Tidy gesehen habe. Apropos Tidy, wie könnte ich diesen HTML-Code zuerst durch Tidy laufen lassen und dann parsen? Ich bin mir nicht sicher, wie ich das machen soll. Hier ist der Code, den ich bisher habe, der nicht funktioniert, weil er nicht alles holt, was ich vom HTML brauche. Jede Hilfe oder Beratung wäre sehr willkommen. DankWie man HTML mit TouchXML oder irgendeiner anderen Alternative parst

Mein aktueller Code:

NSMutableArray *res = [[NSMutableArray alloc] init]; 

// using local resource file 
NSString *XMLPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"example.html"]; 
NSData *XMLData  = [NSData dataWithContentsOfFile:XMLPath]; 
CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease]; 

NSArray *nodes = NULL; 

nodes = [doc nodesForXPath:@"//div" error:nil]; 

for (CXMLElement *node in nodes) { 
    NSMutableDictionary *item = [[NSMutableDictionary alloc] init]; 



    [item setObject:[[node attributeForName:@"id"] stringValue] forKey:@"id"]; 

    [res addObject:item]; 
    [item release]; 
} 


NSLog(@"%@", res); 
[res release]; 

HTML-Datei, die analysiert werden muss:

<html> 
<head> 
<base target="_blank" /> 
</head> 
<body style="margin:2;"> 
<div id="group"> 
<div id="groupURL"><a href="http://www.example.com/groups">Group URL</a></div> 
<img id="grouplogo" src="http://images.example.com/groups/image.png" /> 
<div id="groupcomputer"><a href="http://www.example.com/groups/page" title="Group Title">Group title this would be here</a></div> 
<div id="groupinfos"> 
    <div id="groupinfo-l">Person</div><div id="groupinfo-r">Ralph</div> 
    <div id="groupinfo-l">Years</div><div id="groupinfo-r">4 years</div> 
    <div id="groupinfo-l">Salary</div><div id="groupinfo-r">100K</div> 
    <div id="groupinfo-l">Other</div><div id="groupoth" style="width:15px">other info</div> 
</body> 
</html> 

EDIT: Ich konnte Element Parser verwenden, aber ich muss wissen, wie den Namen der Person zu extrahieren aus das folgende Beispiel, das in diesem Fall Ralph wäre.

<div id="groupinfo-l">Person</div><div id="groupinfo-r">Ralph</div>

Antwort

1

Ich weiß nicht, ob Sie etwas falsch zu machen sind, aber ich empfehle Sie element parser, der besten Parser für XML zu verwenden und HTML ich gefunden habe. Hoffe das hilft.

+0

Ich habe Element Parser versucht, aber ich kann bestimmte Daten nicht erhalten. Angenommen, ich versuche, den Text "groupURL" zu erhalten. Ich kann es nicht verstehen. Ich kann die URL gut erhalten, aber ich kann nicht nur den Gruppen-URL-Titel des Links erhalten. Hier ist der Code, den ich dafür hatte: \t Element * aTag = [Dokument selectElement: @ "a"]; \t NSString * href = [aTag-Attribut: @ "href"]; \t NSLog (@ "% @", href); – 0SX

+0

Ich bin nicht auf meinem Mac, also kann ich Ihnen nicht den genauen Code geben, aber wenn Sie den Text von "groupURL" -Element bekommen wollen, sollten Sie [yourElement contentsText] oder [yourElement getChildsContentsText: @ "your child" aufrufen ]. Versuchen Sie es trotzdem mit einem von ihnen, morgen kann ich Ihnen die genaue Lösung geben. – ender

+0

Danke für den Tipp-Ender, ich werde sehen, ob ich den Text bekommen kann. Wenn es Ihnen nichts ausmacht, können Sie morgen noch den genauen Code posten, wenn Sie sich erinnern. Vielen Dank – 0SX

Verwandte Themen