我尝试使用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项目:)