선언

protocol XMLParserDelegate

  • 인스턴스메서드

parser(_:didStartElement:namespaceURI:qualifiedName:attributes:)

특정한 엘리먼트의 열린 태그를 읽었을 때 파서객체가 델리게이트에게 엘리먼트를 전송한다.

선언

optional func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:])

  • 인스턴스메서드

parser(_:foundCharacters:)

파서객체가 델리게이트에게 현재 엘리먼트의 전체 또는 일부를 나타내는 문자열을 제공하기 위해 전송한다.

선언

optional func parser(_ parser: XMLParser, foundCharacters string: String)

  • 인스턴스메서드

parser(_:didEndElement:namespaceURI:qualifiedName:)

특정한 엘리먼트의 닫힌 태그를 읽었을 때 파서객체가 델리게이트에게 엘리먼트를 전송한다.

선언

optional func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)

  • NSString의 인스턴스메서드

trimmingCharacters(in:)

주어진 character set에 포함된 리시버 문자를 양쪽 끝에서 제거함으로써 만들어진 새 문자열을 반환하는 메서드

선언

func trimmingCharacters(in set: CharacterSet) -> String

  • 파서중에 닫힌태그 뒤의 개행되는것을 문자로 잡는 파서가 있다!

이로인해 에러가 발생할 수 있는데

공식문서에 따르면 불린값을 가진 변수를 하나 선언하고, 함수에 따라 값을 바꾸면 해결 할 수 있다.

예시코드)


func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
blank = true
}

func parser(_ parser: XMLParser, foundCharacters string: String) {
if blank == true {
code
}
}

func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
blank = false
}