티스토리 뷰

오픈소스인 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가 반환된다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/05   »
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
글 보관함