Манипулирование HTML - PullRequest
       43

Манипулирование HTML

1 голос
/ 25 мая 2011

Мне нужно прочитать HTML-файл и найти в нем некоторые теги. Исходя из результатов, некоторые теги необходимо будет удалить, изменить другие и, возможно, улучшить некоторые атрибуты, чтобы затем записать файл обратно.

NSXMLDocument - это путь? Я не думаю, что парсер действительно нужен в этом случае, это может даже означать больше работы. И я не хочу трогать весь файл, все, что мне нужно сделать, это загрузить файл в память, изменить некоторые вещи и сохранить его снова.

Обратите внимание, что я буду иметь дело с HTML, а не с XHTML. Может ли это быть проблемой для NSXMLDocument? Возможно, некоторые несоответствующие теги или не закрытые могут заставить его перестать работать.

Ответы [ 3 ]

4 голосов
/ 25 мая 2011

NSXMLDocument это путь. Таким образом, вы можете использовать Xpath / Xquery, чтобы найти нужные теги. Плохой HTML может быть проблемой, но вы можете установить NSXMLDocumentTidyHTML, и все должно быть в порядке, если это действительно не плохо.

1 голос
/ 25 мая 2011

NSXMLDocument, возможно, потерпит неудачу из-за того, что HTML-страницы плохо сформированы, но вы можете попробовать с NSXMLDocumentTidyHTML / NSXMLDocumentTidyXML (вы можете использовать их оба для улучшения результатов), как указано здесь , а также взгляните на this подход загара при изменении HTML.

1 голос
/ 25 мая 2011
NSRange startRange = [string rangeOfString:@"<htmlTag>"];
NSRange endRange = [string rangeOfString:@"</htmlTag>"];
NSString *subStr = [string subStringWithRange:NSMakeRange(startRange.location+startRange.length, endRange.location-startRange.location-startRange.length)];
NSString *finalStr = [string stringByReplacingOccurencesOfString:substr];

, а затем запишите finalstr в файл.

Это то, что я хотел бы сделать, обратите внимание, что я точно не знаю, какими будут преимущества использования NSXMLDocument, это должно сделать это прекрасно.

...