1

我需要阅读一个 HTML 文件并在其中搜索一些标签。根据结果​​,需要删除一些标签,更改其他标签,并可能优化一些属性 - 然后将文件写回。

NSXMLDocument 是要走的路吗?我不认为在这种情况下真的需要解析器,它甚至可能意味着更多的工作。而且我不想接触整个文件,我需要做的就是将文件加载到内存中,更改一些内容,然后再次保存。

请注意,我将处理 HTML,而不是 XHTML。这可能是 NSXMLDocument 的问题吗?也许一些不匹配的标签或未关闭的标签可能会使其停止工作。

4

3 回答 3

4

NSXMLDocument 是要走的路。这样你就可以使用 Xpath/Xquery 来找到你想要的标签。糟糕的 HTML 可能是个问题,但您可以设置 NSXMLDocumentTidyHTML,除非它真的很糟糕,否则应该没问题。

于 2011-05-25T13:40:37.007 回答
1
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 的好处是什么,这应该可以完美地做到这一点。

于 2011-05-25T13:42:26.730 回答
1

NSXMLDocument由于 HTML 页面格式不正确,可能会失败,但您可以尝试使用NSXMLDocumentTidyHTML/ NSXMLDocumentTidyXML(您可以同时使用它们来改善结果),如此处所述,还可以查看this for tan 方法来修改 HTML。

于 2011-05-25T13:46:03.713 回答