util/swift/Sources/AlibabaCloudOSSUtil/XMLUtil.swift (32 lines of code) (raw):

import Foundation import SWXMLHash class XMLUtil { func parseError(_ xmlString: String) -> [String: Any] { let resultDict = parseXMLToDict(xmlString) if let errorDict = resultDict["Error"] as? [String: Any] { let filteredDict = errorDict.filter { key, _ in ["Code", "Message", "RequestId", "HostId"].contains(key) } return filteredDict } else { return [:] } } func parseXMLToDict(_ xmlString: String) -> [String: Any] { let xml = XMLHash.parse(xmlString) return parseXMLElementToDict(element: xml) ?? [:] } func parseXMLElementToDict(element: XMLIndexer) -> [String: Any]? { var resultDict: [String: Any] = [:] for child in element.children { if child.children.isEmpty { resultDict[child.element!.name] = child.element!.text } else { if let dict = parseXMLElementToDict(element: child) { resultDict[child.element!.name] = dict } } } return resultDict.isEmpty ? nil : resultDict } }