如何在Swift中使用NSXMLParser解析具有2个根元素的xml文档?

时间:2016-03-19 17:59:20

标签: xml swift element nsxmlparser

xml to parse

我试图在Swift中使用NSXMLParser解析这个XML文档。 我的问题是我能够解析属性元素,如

PointsButoir,Difficulte ,etc.

但是当到达Difficulte元素并关闭Properties的标记时,会发生错误。 以下是我编写此代码的方法:

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

    if (elementName == "Proprietes"){
        isProp = true;

    }
    if (elementName == "arbreRenduINF2990"){
        isArbre = true;
    }
    switch elementName {

    case "xml": break
    case "Proprietes" :break
    case "arbreRenduINF2990" :
        print("arbre")
    case "PointsButoir":
        let ptsButoir = attributeDict["Nombre"] as String!
        prop.ptsButoir = Int(ptsButoir)!
    case "PointsTriangulaire" :
        let ptsTriangulaires = attributeDict["Nombre"] as String!
        prop.ptsTri = Int(ptsTriangulaires)!
    case "PointsCible" :
        let ptsCible = attributeDict["Nombre"] as String!
        prop.ptsCible = Int(ptsCible)!
    case "PointsVictoire" :
        let ptsVic = attributeDict["Nombre"] as String!
        prop.ptsVictoire = Int(ptsVic)!
    case "PointsBilleGratuite" :
        let ptsBille = attributeDict["Nombre"] as String!
        prop.ptsBilleGratuite = Int(ptsBille)!
    case "Difficulte" :
        let diff = attributeDict["Nombre"] as String!
        prop.difficulte = Int(diff)!
    case "table" :
        let nbEnfants = attributeDict["nbEnfants"] as String!
        let nbreNoeuds = Int(nbEnfants)!

    case "boost": break
    case "trou":
        print("trou")
    default :
        let posX = attributeDict["posX"] as String!
        if let n = NSNumberFormatter().numberFromString(posX) {
        attObjets.posX = CGFloat(n)
        }
        let posY = attributeDict["posY"] as String!
        if let n = NSNumberFormatter().numberFromString(posY) {
        attObjets.posY = CGFloat(n)
        }
        let posZ = attributeDict["posZ"] as String!
        if let n = NSNumberFormatter().numberFromString(posZ) {
            attObjets.posZ = CGFloat(n)
        }
        let angleX = attributeDict["angleX"] as String!
        if let n = NSNumberFormatter().numberFromString(angleX) {
            attObjets.angleX = CGFloat(n)
        }
        let angleY = attributeDict["angleY"] as String!
        if let n = NSNumberFormatter().numberFromString(angleY) {
            attObjets.angleY = CGFloat(n)
        }
        let angleZ = attributeDict["angleZ"] as String!
        if let n = NSNumberFormatter().numberFromString(angleZ) {
            attObjets.angleZ = CGFloat(n)
        }
        let scaleX = attributeDict["scaleX"] as String!
        if let n = NSNumberFormatter().numberFromString(scaleX) {
            attObjets.scaleX = CGFloat(n)
        }
        let scaleY = attributeDict["scaleY"] as String!
        if let n = NSNumberFormatter().numberFromString(scaleY) {
            attObjets.scaleY = CGFloat(n)
        }

        let scaleZ = attributeDict["scaleZ"] as String!
        if let n = NSNumberFormatter().numberFromString(scaleZ) {
            attObjets.scaleZ = CGFloat(n)
        }

        let objetAcharger = monObjet(name: elementName,attributs: attObjets)
        nodesAcharger.append(objetAcharger)
    }

}

func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?){
    if (isProp){

    }
    if(isArbre){
    }

}
 func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
    print("Erreur dans le parseur XML")
}

在我看来,它无法解析下一个根元素(arbreRenduINF2990),但我无法找到问题

0 个答案:

没有答案