2015-08-06 2 views
0

Я использую AEXML для своего приложения, у меня есть проблема, когда я пытался извлечь ссылку из данных xml.Как извлечь ссылку href из XML?

вот XML данные:

<entry> 
    <updated>2015-08-06T01:17:16-07:00</updated> 
    <id im:id="969299396">https://itunes.apple.com/us/album/love-and-marriage/id969298500?i=969299396&uo=2</id> 
    <title>Love and Marriage - Frank Sinatra</title> 
    <im:name>Love and Marriage</im:name> 
    <link rel="alternate" type="text/html" href="https://itunes.apple.com/us/album/love-and-marriage/id969298500?i=969299396&uo=2" /> 
    <im:contentType label="Music" term="Music"> 
     <im:contentType label="Track" term="Track" /> 
    </im:contentType> 
    <category term="Easy Listening" label="Easy Listening" im:id="25" scheme="https://itunes.apple.com/us/genre/music-easy-listening/id25?uo=2" /> 
    <link href="http://a1901.phobos.apple.com/us/r1000/020/Music5/v4/c1/9c/ed/c19ced58-1bd8-4940-7edd-a3c540be7584/mzaf_5226977055945471954.plus.aac.p.m4a" title="Preview" rel="enclosure" type="audio/x-m4a" im:assetType="preview"> 
     <im:duration>30000</im:duration> 
    </link> 
    <im:artist href="https://itunes.apple.com/us/artist/frank-sinatra/id171366?uo=2">Frank Sinatra</im:artist> 
    <im:price amount="1.29000" currency="USD">$1.29</im:price> 
    <im:image height="55">http://is5.mzstatic.com/image/pf/us/r30/Music3/v4/48/8c/6c/488c6cd9-f2e2-fb72-a1d9-f8e0a6cbce63/UMG_cvrart_00602547253309_01_RGB72_1500x1500_15UMGIM08561.55x55-70.jpg</im:image> 
    <im:image height="60">http://is2.mzstatic.com/image/pf/us/r30/Music3/v4/48/8c/6c/488c6cd9-f2e2-fb72-a1d9-f8e0a6cbce63/UMG_cvrart_00602547253309_01_RGB72_1500x1500_15UMGIM08561.60x60-50.jpg</im:image> 
    <im:image height="170">http://is1.mzstatic.com/image/pf/us/r30/Music3/v4/48/8c/6c/488c6cd9-f2e2-fb72-a1d9-f8e0a6cbce63/UMG_cvrart_00602547253309_01_RGB72_1500x1500_15UMGIM08561.170x170-75.jpg</im:image> 
    <rights>℗ 2015 Universal Music Enterprises</rights> 
    <im:releaseDate label="April 21, 2015">2015-04-21T00:00:00-07:00</im:releaseDate> 
    <im:collection> 
     <im:name>Ultimate Sinatra</im:name> 
     <link rel="alternate" type="text/html" href="https://itunes.apple.com/us/album/ultimate-sinatra/id969298500?uo=2" /> 
     <im:contentType label="Music" term="Music"> 
      <im:contentType label="Album" term="Album" /> 
     </im:contentType> 
    </im:collection> 
    <content type="html"><table border="0" width="100%"> 
<tr> 
    <td> 
     <table border="0" width="100%" cellspacing="0" cellpadding="0"> 
      <tr valign="top" align="left"> 

        <td align="center" width="166" valign="top"> 
         <a href="https://itunes.apple.com/us/album/love-and-marriage/id969298500?i=969299396&uo=2"><img border="0" alt="Frank Sinatra - Love and Marriage artwork" src="http://is1.mzstatic.com/image/pf/us/r30/Music3/v4/48/8c/6c/488c6cd9-f2e2-fb72-a1d9-f8e0a6cbce63/UMG_cvrart_00602547253309_01_RGB72_1500x1500_15UMGIM08561.170x170-75.jpg" /></a> 
        </td> 
        <td width="10"><img alt="" width="10" height="1" src="https://s.mzstatic.com/images/spacer.gif" /></td> 
        <td width="95%"> 


        <b><a href="https://itunes.apple.com/us/album/love-and-marriage/id969298500?i=969299396&uo=2">Love and Marriage</a></b><br/> 




         <a href="https://itunes.apple.com/us/album/ultimate-sinatra/id969298500?uo=2">Ultimate Sinatra</a><br/> 


        <a href="https://itunes.apple.com/us/artist/frank-sinatra/id171366?uo=2">Frank Sinatra</a> 

        <font size="2" face="Helvetica,Arial,Geneva,Swiss,SunSans-Regular"> 

         <br/> 
         <b>Genre:</b> <a href="https://itunes.apple.com/us/genre/music-easy-listening/id25?uo=2">Easy Listening</a> 

         <br/> 
         <b>Price:</b> $1.29 

         <br/> 
         <b>Release Date:</b> April 21, 2015 

        </font> 
       </td> 
      </tr> 
     </table> 
    </td> 
</tr> 
<tr> 
    <td> 



      <font size="2" face="Helvetica,Arial,Geneva,Swiss,SunSans-Regular"> &#169; ℗ 2015 Universal Music Enterprises</font> 

    </td> 
</tr> 

и вот код, который я пробовал:

var error: NSError? 
    var data : NSData = NSData(contentsOfURL: NSURL(string: "https://itunes.apple.com/us/rss/topsongs/limit=10/genre=25/xml")!)! 
    if let xmlDoc = AEXMLDocument(xmlData: data, error: &error) { 
     println(xmlDoc.xmlString) 
     println("rene 2") 
     if let cats = xmlDoc.root["entry"].all { 
      println(cats) 
      println("rene 3") 
      for cat in cats { 

       println("rene 4") 
       var title = cat["title"].value 
       var artist = cat["artist"].value 
       var albumUrl = cat["im:image"].value 
       var tes = cat.attributes["link"]!.stringValue 

       println(">>>>>\(tes)<<<<<<") 


      } 
     } 

    } 

У меня нет проблемы с печатью название, исполнитель, и т.д. Но я всегда терпел неудачу, когда пытался получить/извлечь ссылку href.

Пожалуйста, дайте мне предложение.

+0

Много помощи там. Посмотрите на это: http://stackoverflow.com/questions/28397907/handling-an-attribute-of-an-xml-element-in-swift и http://stackoverflow.com/questions/29937456/swift-parsing- attribute-name-for-given-elementname –

ответ

1

Если вы хотите получить href атрибут из link элемента, вам необходимо получить элемент первым:

for link in cat["link"].all! { 
    if let href = link.attributes["href"] as? String { 

    } 
} 
+0

Ваш ответ сработал для меня, спасибо: D –

+0

Как я могу получить только второй элемент ссылки? –

+0

Функция 'all' возвращает массив. Таким образом, вы можете обращаться к элементу массива по индексу. –