티스토리 뷰
오픈소스인 SWXMLHash를 이용하여 XML을 파싱해보겠다.
환경은 Swift 2.0에 Xcode 7.1을 사용하였다.
SWXMLHash의 Git 주소는 다음과 같다.
https://github.com/drmohundro/SWXMLHash
먼저 SWXMLHash.h 파일과 SWXMLHash.swift 파일을 자신의 프로젝트에 추가한다.
예제에 사용할 XML은 다음과 같다.
<root>
<elements>
<item>
<name>사과</name>
<color>빨강</color>
</item>
<item>
<name>바나나</name>
<color>노랑</color>
</item>
<item>
<name>포도</name>
<color>보라</color>
</item>
</elements>
</root>
위의 XML 문자열은 아래 예제코드의 xml 변수에 들어있다고 가정하겠다.
실제 사용할 때에 xml문자열은 파일에서 읽어오거나, 서버에서 받아올 것이다.
위의 XML을 파싱하여 과일명과 색을 출력해보겠다.
let xml = [XML문자열]
let xmlDom = SWXMLHash.config({ config in
config.shouldProcessLazily = true
}).parse(xml as String)
let items = xmlDom["root"]["elements"]["item"]
for item in items {
let name = item["name"].element?.text!
let color = item["color"].element?.text!
print("\(name) : \(color)")
}
결과로는
사과 : 빨강
바나나 : 노랑
포도 : 보라
가 출력된다.
사용법이 매우 간단하기 때문에 쉽게 사용할 수 있다. 각 태그의 이름을 대괄호 안에 써줌으로써 태그의 값들을 가져올 수 있다.
태그 사이의 텍스트를 가져올 때는 element?.text! 로 가져오면 된다.
두 번째 과일인 바나나의 이름만을 가져오려면
xmlDom["root"]["elements"]["item"][1]["name"].element?.text!
로 가져오면 된다. 같은 태그가 여러 개 인 경우 배열로 취급되는데 인덱스 값을 줌으로써 가져올 수 있다.
또한 태그나 자신의 하위 태그들의 개수를 가져오는 방법도 알아보겠다.
먼저 자신과 같은 계층에 있는 같은 이름을 가진 태그들의 개수를 가져오는 법을 알아보겠다.
xmlDom["root"]["elements"]["item"].all.count
위와 같이 하면 root 안의 elements 태그안의 item 태그는 3개이므로 3이 반환된다.
또한 xmlDom["root"]["elements"].all.count는 root안의 elements 태그는 1개뿐이므로 1이 반환된다.
또한 태그에 속한 모든 하위 태그들의 개수를 세는 법은
xmlDom["root"]["elements"].element?.count 와 같이 한다.
elements 태그에 속한 하위태그는 item 태그 3개이므로 3이 반환된다.
또한 xmlDom["root"]["elements"]["item"][0].element?.count 는 첫 번째 item 태그의 하위태그가 name과 color 두개이므로 2가 반환된다.
'IOS' 카테고리의 다른 글
[Swift] NSString에서 문자열 자르기와 이어붙이기 (0) | 2015.11.15 |
---|---|
[Swift] NSDateFormatter로 NSDate와 문자열 날짜포맷 생성하기 (0) | 2015.11.14 |
[Swift] LocalNotification(로컬알림) 수정하기 (0) | 2015.11.13 |
[Swift] LocalNotification(로컬알림) 일정 주기로 반복하기 (0) | 2015.11.13 |
[Swift] LocalNotification(로컬알림) 예약하기 (0) | 2015.11.13 |
- Total
- Today
- Yesterday
- 람다
- Swift 2.0
- 코어
- 알람
- Docker
- 프로세서
- 컴퓨터 시간
- gitlab
- opensource
- 성능
- 시간
- RAMDA
- json
- Java8
- 날짜
- 성능개선
- 클로저
- javascript
- react
- Stream
- 자바
- 자바 성능
- 자료구조
- Java
- rambda
- 메모리
- Jackson
- 퍼포먼스
- Clojure
- 리액트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |