WooKoo Blog

물과 같이

개발/개발

[iOS] - XML Parse사용법

WooKoo 2020. 6. 5. 13:49

기본적으로 코코아 터치 프레임워크에서 제공하는  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