2014-12-22 2 views
1

나는 다음과 같은 THIS 자습서 및 모든 작동하지만 잘 내 응용 프로그램에서 수정하고 싶습니다. 내 응용 프로그램에서 일부 HTML 태그를 제거하려면 원하는 HTML 태그를 웹 페이지의 전체 HTML 코드를 저장할 문자열로 수정하려면 원하는 문자열을 수정하고 싶습니다. 그러나 태그를 제거하고 싶습니다.신속하게 문자열에서 특정 HTML 태그를 제거하는 방법은 무엇입니까?

<meta id="g-version" name="g-version" content="7fcbb0a2" /> 
 
<meta id="j-version" name="j-version" content="1.2.0" /> 
 
<meta id="build" name="build" content="60068c96635318099c2acaff2a2b2e00" /> 
 
<meta id="document-version" name="document-version" content="2.1.8" /> 
 
<meta id="book-assignments" name="book-assignments" content="{Type/Guide}, {Topic/Languages &amp; Utilities/Swift}" /> 
 
<meta scheme="apple_ref" id="identifier" name="identifier" content="//apple_ref/doc/uid/TP40014097" /> 
 
<meta id="chapterId" name="chapterId" content="TP40014097-CH5"> 
 
<meta id="book-title" name="book-title" content="The Swift Programming Language" /> 
 
<meta id="book-resource-type" name="book-resource-type" content="Guide" /> 
 
<meta id="book-root" name="book-root" content="./" /> 
 
<meta id="book-json" name="book-json" content="book.json"> 
 
<meta id="date" name="date" content="2014-10-16" /> 
 
<meta id="description" name="description" content="The definitive guide to Swift, Apple’s new programming language for building iOS and OS X apps." /> 
 
<meta id="IndexTitle" name="IndexTitle" content="" /> 
 

 
<meta id="devcenter" name="devcenter" content="<!-- DEVCENTER_NAME -->" /> 
 
<meta id="devcenter-url" name="devcenter-url" content="<!-- DEVCENTER_URL -->" /> 
 
<meta id="reflib" name="reflib" content="<!-- REFLIB_NAME -->" /> 
 

 
<meta id="xcode-display" name="xcode-display" content="render" /> 
 
<meta name="apple-mobile-web-app-capable" content="yes" /> 
 
<meta name="viewport" content="width=device-width, maximum-scale=1.0">
:이 링크에서

func loadTutorials(){ 

    var tutorialsUrl : NSURL = NSURL(string: "https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_467")! 
    var tutorialsHtmlData : NSData = NSData(contentsOfURL: tutorialsUrl)! 

    var string = NSString(data: tutorialsHtmlData, encoding: NSUTF8StringEncoding) 

    println(string!) 

//  var tutorialsParser : TFHpple = TFHpple(HTMLData: tutorialsHtmlData) 
//   
//  var tutorialsXpathQueryString:String = "//div[@class='content-wrapper']/p[@class='header-text']/a" 
//   
//   
// 
//  var tutorialsNodes : Array = tutorialsParser.searchWithXPathQuery(tutorialsXpathQueryString) 
//   
//  var newTutorials : NSMutableArray = NSMutableArray(capacity: 0) 
//   
//  for element in tutorialsNodes as [TFHppleElement]{ 
//    
//   // 5 
//   var tutorial : Tutorial = Tutorial() 
//   newTutorials.addObject(tutorial) 
//    
//   // 6 
//   tutorial.title = element.firstChild.content 
//    
//   // 7 
//   tutorial.url = element.objectForKey("href") 
//  } 

} 

나는 HTML에서 메타 태그 아래에 제거 할 : 그 문자열에서 일부 특정 태그를 제거 할 수 있습니다 내가 그 튜토리얼의 코드를 다음 어떻게하는 것이 어떤 아이디어

그러나 나는 이것을 할 수있는 아이디어가 없다.

이 내 소스 코드입니다.

나는이 질문을했습니다 It is posible to load customise HTML view into webView in swift?하지만이 시간 programatically 달성해야합니다. 이것을위한 솔루션?

답변

0

가장 쉬운 방법은 NSRegularExpression을 사용하는 것입니다. 이를 통해 "<meta[^>]*>"을 찾아 null 문자열로 바꿀 수 있습니다. 이것은 대부분의 경우에 적용됩니다. 위의 정규식은 내가 생각한 바로 그 빠르고 재밌는 것임을 주목하십시오.

더 안전한 방법은 XML 파서를 사용하는 것입니다. 그러나이 경우 많은 HTML 소스가 XML을 준수하지 않는 경우 실패 할 수 있습니다.

0

다음은 구현이 완벽하지는 않지만 (제안 된 것처럼이를 달성하기 위해 정규 표현식을 사용할 수도 있지만) 작동합니다. 나는 예외를 제기했기 때문에 코드에서 다른 사이트로 링크를 변경해야했습니다 (developer.apple.com에 권한이 필요하기 때문일 수 있습니다).

func loadTutorials() { 

    var tutorialsUrl: NSURL = NSURL(string: "http://rinatkhanov.me/")! 
    var tutorialsHtmlData : NSData = NSData(contentsOfURL: tutorialsUrl)! 

    var input = NSString(data: tutorialsHtmlData, encoding: NSUTF8StringEncoding) 
    let lines = input?.componentsSeparatedByString("\n") as [String] 
    var result = "" 
    for line in lines { 
     if !line.hasPrefix("<meta") { 
      result += "\n" + line 
     } 
    } 

    println(result) 
} 

간단히 말하자면, 반복문을 반복하여 열고 meta 태그가있는 것을 제거합니다.

+0

감사하지만 난하지 않습니다 메타 태그 만 제거하고 싶지만'

0

그것은 제거 HTML에 대한 신속한에서 잘 작동이 시도

let html: String = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")! 

do { 
    let regex:NSRegularExpression = try NSRegularExpression( pattern: "<.*?>", options: NSRegularExpressionOptions.CaseInsensitive) 
    let range = NSMakeRange(0, html.characters.count) 
    let htmlLessString :String = regex.stringByReplacingMatchesInString(html, options: NSMatchingOptions(), range:range , withTemplate: "") 

    print("Html Printing For payment \(htmlLessString)") jsonParsingOfWebviewReturn(htmlLessString) 
} catch { 
      // report error 
} 
1

그것은 SwiftSoup 쉽게 수행 할 수 있습니다 : 작업 코드를 완벽하게 정상적으로 응답에 대한

var htmlString        // your html 
let doc = try! SwiftSoup.parse(htmlString) // init SwiftSoup object 
doc.select("meta").remove()    // css query to select, then remove 
try! htmlString = doc.outerHtml()   // get the modified html 
관련 문제