Сбой при анализе больших файлов XML - ОШИБКА: Ошибка Domain=DDXMLErrorDomain Code=1 "(null)"

Я анализирую XML с помощью KissXML, Я могу успешно разобрать небольшой XML, но у меня есть проблемы с большим XML. Вот мой код

let url = URL(fileURLWithPath: xmlPath!)
let xmlData = try! Data(contentsOf: url)
    do {
        let doc = try DDXMLDocument(data: xmlData, options:0)// This is not working if xml is large (6MB)
        let project = try! doc.nodes(forXPath: "//Project") as! [DDXMLElement]

        for user in project {

            let ProjectName = user.attribute(forName: "ProjectName")!.stringValue
            let userTime = user.attribute(forName: "UseTime")!.stringValue
            print("ProjectName:\(ProjectName!),userTime:\(userTime!)")
        }
    }
    catch {
        print("\(error)") //Get some idea from this error
    }

При синтаксическом анализе 12k XML успешно, но 6M XML был неудачным. При разборе большого XML(6M) doc равен нулю. Я пытаюсь использовать NSXMLParser, возникает та же проблема, маленький файл может работать, большие файлы не могут. ОШИБКА:NSXMLParserErrorDomain ошибка 4.

1 ответ

Решение

Вы не должны игнорировать ошибку, используя try?всегда заключайте в do - catch построить. Используйте приведенный ниже код и посмотрите, какую ошибку вы получаете, а затем попытайтесь ее устранить. Не стреляйте в темноте, получите представление об ошибке и, если ничего не получится, напишите свое сообщение об ошибке в вопросе.

do {
    let doc = try DDXMLDocument(data: xmlData, options:0)
    // Your next line of code
}
catch {
    print("\(error)") //Get some idea from this error
}
Другие вопросы по тегам