Swift

iOS 분리된 타겟 내부 XML 파일 파싱

반다이크 2022. 5. 2. 16:00
반응형

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