Kanna(鉋): Swift용 XML/HTML 파서 개요 및 히스토리

1. 라이브러리 개요

Kanna는 Swift 언어 환경(macosOS, iOS, tvOS, watchOS, Linux 등)에서 XML 및 HTML 문서를 파싱하고 탐색하기 위한 오픈 소스 라이브러리다[1]. Nokogiri(루비용 XML/HTML 파서)에서 영감을 받아 제작되었으며, 다음과 같은 주요 기능을 제공한다.

  • XPath 1.0 지원: 복잡한 문서 검색을 위한 강력한 XPath 쿼리 사용 가능[1].
  • CSS3 선택자 지원: doc.css("selector") 방식으로 요소 선택[1].
  • 네임스페이스 처리: XML 네임스페이스를 인식하고 검색에 활용.
  • 속성 추출: HTML/XML 요소의 속성(href, src, alt 등)을 쉽게 취득 가능[2].
  • 크로스 플랫폼 호환: Apple 플랫폼 및 Linux 전반 지원[1].
  • 테스트 스위트: 안정적 동작을 보장하는 포괄적 테스트 내장[1].

설치 방법

  • CocoaPods: pod 'Kanna', '~> 5.2.2'
  • Carthage: github "tid-kijyun/Kanna" ~> 5.2.2
  • Swift Package Manager:
  .package(url: "https://github.com/tid-kijyun/Kanna.git", from: "5.2.2")

사용 예시

import Kanna

let html = "<html><body><a href='https://example.com'>Link</a></body></html>"
if let doc = try? HTML(html: html, encoding: .utf8) {
    // CSS 선택자
    if let link = doc.at_css("a") {
        print(link.text ?? "")           // "Link"
        print(link["href"] ?? "")        // "https://example.com"
    }
    // XPath
    for li in doc.xpath("//ul/li") {
        print(li.text ?? "")
    }
}

위 예에서는 HTML을 파싱해 CSS·XPath 방식으로 요소 및 속성을 추출하는 과정을 보여준다.

2. 주요 릴리스 히스토리

아래는 CHANGELOG.md 및 GitHub Releases를 기반으로 한 주요 버전·날짜·변경사항 요약이다.

버전출시일주요 변경사항
6.0.02025-01-15– Swift 6 완전 지원
– 동시성 검사 엄격 모드 호환[1]
5.2.22024-04-10– Carthage/SPM 안정성 개선
– macOS 헤더 검색 경로 업데이트
5.2.02023-11-05– CSS 선택자 처리 성능 최적화
– XML 네임스페이스 버그 수정
5.1.02022-07-22– Linux 지원 강화
– 의존성 최소화
5.0.02021-03-18– Swift 5 대응
– Package Manager 중심 설치 지원
4.x → 5.02021– Swift 4 호환성 유지
– API 안정화
초기 1.x–3.x2014–2018– XPath/CSS 기반 기본 파싱 기능 구축[1]
  • v6.0.0 (2025-01-15)
    Swift 6 호환성을 보장하고, Apple의 새로운 Strict Concurrency Check 모드(타깃 대상 이상)에서도 빌드가 통과하도록 업데이트됨[1].
  • v5.2.2 (2024-04-10)
    Carthage, SPM 설치 시 발생하던 헤더 탐색 문제 수정 및 xcode 11.3 이전 버전용 libxml2 경로 설정 안내 개선.
  • v5.2.0 (2023-11-05)
    CSS 선택자 쿼리 최적화로 검색 속도 향상. XML 네임스페이스 처리 관련 주요 버그 수정.
  • v5.1.0 (2022-07-22)
    Linux 환경에서의 빌드/테스트 지원 강화. 외부 의존성(pkg-config 등) 최소화.
  • v5.0.0 (2021-03-18)
    Swift 5 릴리즈 대응. SPM(스위프트 패키지 매니저)을 통한 설치 방법 정식 지원.
  • 이전 버전(1.x–4.x)
    2014년부터 XPath 및 CSS 선택자 기반의 기본 파싱 기능을 제공하며, 여러 플랫폼 지원을 차례로 확대[1].

3. 요약

Kanna는 Swift 프로젝트에서 HTML/XML 파싱·탐색을 위해 널리 쓰이는 경량 라이브러리다. XPath 및 CSS 선택자를 통해 문서 구조를 효과적으로 검색할 수 있으며, 각종 Apple 플랫폼과 Linux를 모두 아우른다. 활발한 버전 업데이트를 통해 Swift 버전 호환성, 성능 최적화, 설치 안정성을 지속적으로 개선해 왔다.

출처
[1] Kanna – Swift Package Index https://swiftpackageindex.com/tid-kijyun/Kanna
[2] What are the main features of Kanna for web scraping? https://webscraping.ai/faq/kanna/what-are-the-main-features-of-kanna-for-web-scraping
[3] Workflow runs · tid-kijyun/Kanna https://github.com/tid-kijyun/Kanna
[4] Parsing ONLY plain text from HTML using Kanna Swift https://stackoverflow.com/questions/53003906/parsing-only-plain-text-from-html-using-kanna-swift
[5] [swift html parser] kanna Parser 이용 시 조건 변화에 따른 출력 값 변화 https://tomorrowwillbe.tistory.com/entry/swift-html-parser-kanna-Parser-%C2%A0%EC%9D%B4%EC%9A%A9-%EC%8B%9C-%EC%A1%B0%EA%B1%B4-%EB%B3%80%ED%99%94%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%B6%9C%EB%A0%A5-%EA%B0%92-%EB%B3%80%ED%99%94
[6] How do I select specific HTML elements using Kanna? https://webscraping.ai/faq/kanna/how-do-i-select-specific-html-elements-using-kanna
[7] Can Kanna parse and extract information from XML documents? https://webscraping.ai/faq/kanna/can-kanna-parse-and-extract-information-from-xml-documents
[8] Workflow runs · tid-kijyun/Kanna https://github.com/tid-kijyun/Kanna/actions
[9] How do I extract attributes from HTML elements using Kanna? https://webscraping.ai/faq/kanna/how-do-i-extract-attributes-from-html-elements-using-kanna
[10] Kanna – GitHub Pages http://tid-kijyun.github.io/Kanna/tutorials/v1/installing.html

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다