XML解析swift:没有描述解析器错误

时间:2018-05-20 11:33:56

标签: swift parsing xml-parsing swift4

我尝试使用XMLParser将GPX(地理定位)文件解析为XML文件。我也尝试将一些函数包装起来以使其更容易。

我在我的解析器中错误地尝试运行我的代码并且" NIL"在parserError的debugDescription中......任何想法在这里发生了什么?

以下是代码:

import Foundation

class Wpt {
    var lat: Float?;
    var long: Float?;
    var name = "";
    var time = "";
}

var gpx = [Wpt]();
var wpt = Wpt();
var foundCharacters = "";

class Parser: NSObject, XMLParserDelegate {

    func test(filepath: URL) {
        let parser = XMLParser(contentsOf: filepath)!
        parser.delegate = self
        let success = parser.parse()
        if success {
            print("done")
        }
        else {
            print(parser.parserError.debugDescription)
        }
    }

    func parser(_ parser: XMLParser,
                didStartElement elementName: String,
                namespaceURI: String?,
                qualifiedName qName: String?,
                attributes attributeDict: [String : String] = [:]) {

        if elementName == "wpt" {

            if let lat = attributeDict["lat"] {
                wpt.lat = Float(lat);
            }

            if let long = attributeDict["long"] {
                wpt.long = Float(long);
            }

        }

    }

    func parser(_ parser: XMLParser,
                foundCharacters string: String) {
        foundCharacters += string;
    }

    func parser(_ parser: XMLParser,
                didEndElement elementName: String,
                namespaceURI: String?,
                qualifiedName qName: String?) {

        if elementName == "name" {
            wpt.name = foundCharacters;
        }

        if elementName == "time" {
            wpt.time = foundCharacters;
        }

        if elementName == "wpt" {
            gpx.append(wpt);
        }

        foundCharacters = "";
    }

    func parserDidEndDocument(_ parser: XMLParser) {
        for wpx in gpx {
            print("\(wpx.name)\n\(wpx.time)");
            print("\n")
        }
    }

}

var filepath = URL(fileURLWithPath: "/Document/Github/GPXParser/GPXParser/Location.gpx")
Parser().test(filepath: filepath)

这是GPX文件:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode">

    <wpt lat="37.331705" lon="-122.030237">
        <name>Cupertino</name>

        <time>2014-09-24T14:55:37Z</time>
    </wpt>
    <wpt lat="37.331285" lon="-122.039837">
        <name>Paris</name>

        <time>2014-09-24T14:58:37Z</time>
    </wpt>

</gpx>

如果您更喜欢我GitHub

上项目的链接

免费批评,首先是我的Swift项目:)

0 个答案:

没有答案