2011-05-25 71 views
1

我需要读取HTML文件并在其中搜索一些标签。根据结果​​,一些标签需要被删除,其他标签会被改变,并可能会改进一些属性 - 然后将文件写回。操作HTML

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

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

回答

4

NSXMLDocument是要走的路。这样你可以使用Xpath/Xquery来查找你想要的标签。错误的HTML可能是一个问题,但你可以设置NSXMLDocumentTidyHTML,它应该是确定的,除非它非常糟糕。

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的优点是什么,这应该是完美的。

1

NSXMLDocument很可能会失败,因为一个事实,即HTML页面没有很好形成,但你可以尝试用NSXMLDocumentTidyHTML/NSXMLDocumentTidyXML(你可以用它们既提高结果)所概述here,也有看起来this为修改HTML的方法。