반응형
1. XML 문서 셋팅
1-1 XML 문서 추가
1-1 Dev, Store 폴더에 XML 추가
1-2 Dev xml 은 app_key의 value 변경
2. XMLParser 사용
2-1 ViewController에서 XMLParser 객체 생성 및 파싱
if let path = Bundle.main.url(forResource: "Settings", withExtension: "xml") {
if let parser = XMLParser(contentsOf: path) {
parser.delegate = self
parser.parse()
}
}
2-2 XMLParserDelegate 구현
// 태그의 시작
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:])
// 태그의 끝
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
// 태그사이의 문자열
func parser(_ parser: XMLParser, foundCharacters string: String)
// 에러시,abortParsing()사용시
func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error)
2-3 코드 구현 예시
<common_data>
<data key="app_key" value="HybridApp_Store"/>
<data key="external_contents_context" value="title"/>
<data key="contents_root" value="contents"/>
</common_data>
app_key value를 파싱하고 싶을때
extension ViewController: XMLParserDelegate {
// 태그의 시작
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
if elementName == "data" {
if let key = attributeDict["key"] {
if key == "app_key" {
print("app_key: ",attributeDict["value"])
}
}
}
}
// 태그의 Data가 string으로 들어옴
func parser(_ parser: XMLParser, foundCharacters string: String) {
}
// 태그의 끝
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
}
}
2-4 빌드 스크립트 구현
## run script phase 추가
**copy bundle Resources 이전에 추가(중요)
SETTING_XML_TO="${PROJECT_DIR}/HybridApp/Settings.xml";
SETTING_XML_FROM="${PROJECT_DIR}/HybridApp/HybridApp_Dev/SettingDev.xml";
cp -r "${SETTING_XML_FROM}" "${SETTING_XML_TO}";
2-5 App_key 확인
반응형
'Swift' 카테고리의 다른 글
iOS ScrollView 설정 (0) | 2022.06.05 |
---|---|
iOS RxSwift GPS (0) | 2022.05.12 |
iOS GoogleService - Info 타겟 분리(FCM, Crashlytics) (0) | 2022.05.02 |
iOS 타겟 분리 (2) | 2022.05.02 |
iOS 서명 기능 만들기_2 (1) | 2022.04.12 |