Сбой при анализе больших файлов 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
}