获取子类 Xml 解析的 attibuteDict - Swift [英] Get attibuteDict of a subclass Xml parsing - Swift

查看:25
本文介绍了获取子类 Xml 解析的 attibuteDict - Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获取我的项目的子类的属性:

I want to get attribute of a subclass of my item :

  <pdv id="1000002" latitude="4621842" longitude="522767" cp="01000" pop="R">
<adresse>16 Avenue de Marboz</adresse>
<ville>BOURG-EN-BRESSE</ville>
<ouverture debut="01:00" fin="01:00" saufjour=""/>
<services>
  <service>Automate CB</service>
  <service>Vente de gaz domestique</service>
</services>
<prix nom="Gazole" id="1" maj="2015-05-30 11:30:17" valeur="1206"/>
<prix nom="SP95" id="2" maj="2015-05-30 11:30:17" valeur="1398"/>
<prix nom="SP98" id="6" maj="2015-05-30 11:30:17" valeur="1434"/>
<rupture id="3" nom="E85" debut="2009-11-03 12:19:00" fin=""/>
<fermeture/></pdv>

我知道如何使用 attributeDict 获取 <pdv id="000"> 但我尝试获取 <prix nom="example">

I know how to get <pdv id="000"> with attributeDict but I try to get <prix nom="example">

我尝试使用该代码:

func beginParsing()
{
    parser = NSXMLParser(contentsOfURL: testUrl)!
    parser.delegate = self
    parser.parse()
}

func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!)
{
    element = elementName
    if (elementName as NSString).isEqualToString("pdv")
    {

        cp = attributeDict["cp"]! as NSMutableString
        latitude = attributeDict["latitude"]! as NSMutableString
        longitude = attributeDict["longitude"]! as NSMutableString

        elements = NSMutableDictionary.alloc()
        elements = [:]
        PrixCarbu = NSMutableString.alloc()
        PrixCarbu = ""

    }

}

func parser(parser: NSXMLParser!, foundCharacters string: NSString!)
{

    if element.isEqualToString("prix") {
        PrixCarbu.appendString(string)

        func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName: String!, attributes: [NSObject : AnyObject]!) {

            prixString = elementName
            if (elementName as NSString).isEqual("prix") {

                println(attributes)

            }

        }

    }

}


func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!)
{
    if (elementName as NSString).isEqualToString("pdv") {
        if !cp.isEqual(nil) {
            elements.setObject(cp, forKey: "cp")
        }
        if !latitude.isEqual(nil) {
            elements.setObject(latitude, forKey: "latitude")
        }
        if !longitude.isEqual(nil) {
            elements.setObject(longitude, forKey: "longitude")
        }`

谢谢!

推荐答案

您应该将prix"检查放入开始元素方法中.它相当于pdv",只是使用相同的机制.

You should put your "prix" check into the start element method. It is equivalent to "pdv", just use the same mechanism.

这篇关于获取子类 Xml 解析的 attibuteDict - Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆