기본적으로 코코아 터치 프레임워크에서 제공하는 XMLParseDelegate를 사용했다.
XMLParseDelegate를 클래스에 채택해주고 클래스를 하나 만들어준다.
var currentElement = ""
class CheckStation{
var checkS:String?
}
var checkArray: Array<String> = []
var checkStation:CheckStation?
여기서 currentElement는 parse 함수에서 사용될 건데 태그들이 들어갈 변수이다.
클래스를 만들어주고 배열을 하나 만들어주자. 왜냐하면 같은 태그의 데이터가 여러개 일 수 있다.
// XML 파서가 시작 테그를 만나면 호출됨
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
currentElement = elementName
if elementName == "stationName"{
checkStation = CheckStation()
}
}
// 현재 테그에 담겨있는 문자열 전달
func parser(_ parser: XMLParser, foundCharacters string: String) {
switch currentElement {
case "stationName":
checkStation?.checkS = string
default:
break;
}
}
// XML 파서가 종료 테그를 만나면 호출됨
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "stationName"{
checkArray.append(checkStation!.checkS!)
}
}
그 후 함수 3개를 작성한다.
그 후 위에서 xmlParser를 실행시킨다.
let xmlParser = XMLParser(contentsOf: URL(string: urlX)!)
xmlParser!.delegate = self
xmlParser!.parse()
모르시면 댓글 남겨주세요!!
'개발 > 개발' 카테고리의 다른 글
[Swift] - Any 와 AnyObject (0) | 2020.07.20 |
---|---|
[Swift] - mutating (0) | 2020.07.17 |
[iOS] - 위치정보(위도 경도 획득하기) (2) | 2020.05.31 |
[Swift] - Generic(제네릭) (0) | 2020.05.28 |
[iOS] - Hashable Protocol 은 무엇일까요??? (0) | 2020.05.27 |