Upload XML Parser to Web view project

LMAO la 4A
This commit is contained in:
Tanguy Herbron 2018-10-05 19:07:26 +02:00
parent 054882fe3b
commit 18c5f03c80
39 changed files with 2310 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="lib/gagawa-1.0.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>tp-deezer3-HerbronTanguy</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,12 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

View File

@ -0,0 +1,67 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><head><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"></link><script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script></head></head><body><body><div><nav style="background-color: #3A3A3A">
<div class="nav-wrapper">
<a href="#" class="brand-logo">Shaka Ponk</a>
</div>
</nav></div><div class="container"><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/47685332/image"> <span class="card-title" style="display: inline-block;">The Evol</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Gung Ho</span><audio controls style="display: block"> <source src="http://cdn-preview-a.deezer.com/stream/c-abbf47cd151375ceee9a5d3835545268-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Fear Ya</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f2ff0cdc8bd8e4764f59d36ccf996d7c-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Faking Love</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-fcb2d52821e6c04143c1f22e69d428b6-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Bunker</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-fcf5ccb3299d1a1704830381fdab640c-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>On Fire</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-4e49a416fde18e3d9f279d9d8abefaac-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Summer Camp</span><audio controls style="display: block"> <source src="http://cdn-preview-c.deezer.com/stream/c-c2faa52ad956a3f43c1eb9a0dd513b60-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Wrong Side</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-df381a09642648d8366cb0599876861a-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Wataman</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-95f2985340a37fc548e7d9ee59db221b-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Slam & Slam'Ed (feat. Edouard Baer)</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-e78585cc5b14ad6b0722ac5155414ce5-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Rusty Fonky</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-ee21b7bada5a57f30d22f2fc62b06ddf-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Share a Line</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-23bb98abf95e1615764b974d1c091bb8-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Mysterious Ways</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f9924ab2fff9b4c5e9a133cadbbf191e-4.mp3" type="audio/mpeg"></li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/1121440/image"> <span class="card-title" style="display: inline-block;">The Geeks And The Jerkin' Socks</span>
</div> </li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/7529289/image"> <span class="card-title" style="display: inline-block;">The White Pixel Ape (Smoking Isolate to Keep in Shape)</span>
</div> </li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/625593/image"> <span class="card-title" style="display: inline-block;">Bad Porn Movie Trax</span>
</div> </li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/8910295/image"> <span class="card-title" style="display: inline-block;">The Black Pixel Ape (Drinking Cigarettes to Take a Break) [Deezer Edition]</span>
</div> </li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/7084004/image"> <span class="card-title" style="display: inline-block;">Monkeys in Bercy</span>
</div> </li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/56633592/image"> <span class="card-title" style="display: inline-block;">Smells Like Teen Spirit</span>
</div> </li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/637662/image"> <span class="card-title" style="display: inline-block;">Loco Con Da Frenchy Talkin' (Recycled version 2009)</span>
</div> </li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/43199651/image"> <span class="card-title" style="display: inline-block;">ApeTizer - EP</span>
</div> </li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/7327738/image"> <span class="card-title" style="display: inline-block;">Wanna Get Free - Single</span>
</div> </li>
</div></div></div></div></div></body></body></html>

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><root><album><title>The Evol</title></album></root>

View File

@ -0,0 +1,158 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><head><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"></link><script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script></head></head><body><body><div><nav style="background-color: #3A3A3A">
<div class="nav-wrapper">
<a href="#" class="brand-logo">Shaka Ponk</a>
</div>
</nav></div><div class="container"><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/47685332/image"> <span class="card-title" style="display: inline-block;">The Evol</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Gung Ho</span><audio controls style="display: block"> <source src="http://cdn-preview-a.deezer.com/stream/c-abbf47cd151375ceee9a5d3835545268-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Fear Ya</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f2ff0cdc8bd8e4764f59d36ccf996d7c-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Faking Love</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-fcb2d52821e6c04143c1f22e69d428b6-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Bunker</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-fcf5ccb3299d1a1704830381fdab640c-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>On Fire</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-4e49a416fde18e3d9f279d9d8abefaac-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Summer Camp</span><audio controls style="display: block"> <source src="http://cdn-preview-c.deezer.com/stream/c-c2faa52ad956a3f43c1eb9a0dd513b60-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Wrong Side</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-df381a09642648d8366cb0599876861a-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Wataman</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-95f2985340a37fc548e7d9ee59db221b-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Slam & Slam'Ed (feat. Edouard Baer)</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-e78585cc5b14ad6b0722ac5155414ce5-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Rusty Fonky</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-ee21b7bada5a57f30d22f2fc62b06ddf-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Share a Line</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-23bb98abf95e1615764b974d1c091bb8-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Mysterious Ways</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f9924ab2fff9b4c5e9a133cadbbf191e-4.mp3" type="audio/mpeg"></li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/1121440/image"> <span class="card-title" style="display: inline-block;">The Geeks And The Jerkin' Socks</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>The Geeks And The Jerkin' Socks</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-df337b3bceea2691b9acf814e5e321c8-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Let's Bang</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-9aa4310e377a9b523076097764a8f73c-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>I'm Picky</span><audio controls style="display: block"> <source src="http://cdn-preview-b.deezer.com/stream/c-b11fb72f08c6975eac04fa636b2335e4-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Brunette Localicious</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-2ef3b3eb0de41cd472dc8463d7388b9a-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>I'm a Lady</span><audio controls style="display: block"> <source src="http://cdn-preview-1.deezer.com/stream/c-1ad5265e8481c5328bf624420b99ec47-12.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Sex Ball</span><audio controls style="display: block"> <source src="http://cdn-preview-c.deezer.com/stream/c-c83f92b3d8de59d7bb5f2f10de11bac9-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>My Name Is Stain</span><audio controls style="display: block"> <source src="http://cdn-preview-8.deezer.com/stream/c-8760266b1573ae556dd019b1704f775c-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Shiza Radio</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-3eaa1f27ab97e220e634bc33a9f334cb-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Run Run Run</span><audio controls style="display: block"> <source src="http://cdn-preview-1.deezer.com/stream/c-14106b0b80c5a6084b2f68d7973c22d9-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Dancing Dead</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-9151f5bd3290627100b4ad3212bc44d3-12.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Reset After All</span><audio controls style="display: block"> <source src="http://cdn-preview-8.deezer.com/stream/c-8221509d9f1a2ad64bc7ca650168d3a0-13.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Old School Rocka (feat. Beat Assailant)</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-506783af2bb89daf3a0512a18d9b813f-11.mp3" type="audio/mpeg"></li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/7529289/image"> <span class="card-title" style="display: inline-block;">The White Pixel Ape (Smoking Isolate to Keep in Shape)</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>The White Pixel Ape (Smoking Isolate to Keep in Shape)</span><audio controls style="display: block"> <source src="http://cdn-preview-a.deezer.com/stream/c-af6e09963639a1cd1f6492adfefd0e27-11.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Lucky G1rl</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-9fb119c61130fef8705650cb57e88630-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Wanna Get Free</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-2bcbc9f39c306a91ab0f72c8af78368d-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>M0nkey On The Wall</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-526683c69cf2c05823e22e91f13dad98-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Scarify</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-4d022fc56665700b144f2563b64ecec5-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Black Listed</span><audio controls style="display: block"> <source src="http://cdn-preview-0.deezer.com/stream/c-05f52e7f38cebd0f83305c6a81e16cda-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>An Eloquent</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-4fe0dbd5932582d631dc9993e1b6c613-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>W0tz Goin'ON</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-5439934bbd426f7bd73bea24af37051d-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Story O' my LF</span><audio controls style="display: block"> <source src="http://cdn-preview-b.deezer.com/stream/c-b7a89c8e9a56d2089c4226e4ee87daf9-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Gimme Guitarrrrra</span><audio controls style="display: block"> <source src="http://cdn-preview-0.deezer.com/stream/c-00dee5f18e8ff1131fa279bac320d679-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Last Alone</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d022e232f5d3a7304726839f76ec082b-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Altered Native Soul</span><audio controls style="display: block"> <source src="http://cdn-preview-1.deezer.com/stream/c-1270a0d5dae3bbd69d8cdf97e09f3782-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Heal Me Kill Me</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-5bb5defae1b799ff50de820e4dd5422d-2.mp3" type="audio/mpeg"></li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/625593/image"> <span class="card-title" style="display: inline-block;">Bad Porn Movie Trax</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Bad Porn Movie Trax</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-27c90f127e672a730a26482e1279f755-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Twisted Minda</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f6836bb82e26d48edfe1f85cb3b82040-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Hombre que Soy</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-356683c60ecab84e2bdd4690ca8f3a27-6.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Prima Scene</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-3d9bb439b2bd7fd805cf8f13771726bd-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Some Guide</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-9da93ee5fcd9e24de6583d6e863345b6-6.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>How we Kill Stars</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-96348e661e8a58ce313f21c36a3adc41-6.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Mad o You</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f88927a62a150d6a582eca5762e9ee41-6.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Do</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-9c1ae12fcee8bd5e06b4757bcced852d-6.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Te Gusta Me</span><audio controls style="display: block"> <source src="http://cdn-preview-6.deezer.com/stream/c-6bbe0e063607792756197eefbcce8507-7.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>French Touch Puta Madre</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-5251539ffb220ac663df05685eeca91a-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Gotta Get Me High</span><audio controls style="display: block"> <source src="http://cdn-preview-b.deezer.com/stream/c-b62725e550901ec5d5e73d149906d08a-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Sum'Luv'</span><audio controls style="display: block"> <source src="http://cdn-preview-8.deezer.com/stream/c-8dca37c2b7ac0864ddea4f2fc8830bd5-7.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Alak'Okan</span><audio controls style="display: block"> <source src="http://cdn-preview-6.deezer.com/stream/c-6b3150cbe3211a33c88c7819ea1c49b9-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Make it Mine</span><audio controls style="display: block"> <source src="http://cdn-preview-a.deezer.com/stream/c-a24f234f7a7e6f196c241c32f4de0768-7.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Just a Nerd</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d0b80488d724ebf92d04c97160404650-6.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Stop the Bot</span><audio controls style="display: block"> <source src="http://cdn-preview-b.deezer.com/stream/c-b70686c995f53b125fb296234718c3b2-5.mp3" type="audio/mpeg"></li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/8910295/image"> <span class="card-title" style="display: inline-block;">The Black Pixel Ape (Drinking Cigarettes to Take a Break) [Deezer Edition]</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>The Black Pixel Ape (Drinking Cigarettes to Take a Break) [Deezer Edition]</span><audio controls style="display: block"> <source src="http://cdn-preview-0.deezer.com/stream/c-0a3ad322c317215909f16230d1669743-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>On the Ro'</span><audio controls style="display: block"> <source src="http://cdn-preview-0.deezer.com/stream/c-0af6cacd0e4c69710c73a494076b328e-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Come on Cama</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d683331577aa449192f799395ddc44ae-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>The Shell Maid Freak</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-228c6db6e1c52fb4d79e8795617532e8-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>The Way Out</span><audio controls style="display: block"> <source src="http://cdn-preview-6.deezer.com/stream/c-6ee7ef5f78c14ea39652c5f162a6b323-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Lucky Boy</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-45a5e360d94ed9308bae87e17efe57c8-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Frag Dog</span><audio controls style="display: block"> <source src="http://cdn-preview-8.deezer.com/stream/c-89b318ed2a0302eed48f2541737ae842-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Mocks the Party</span><audio controls style="display: block"> <source src="http://cdn-preview-1.deezer.com/stream/c-1243c0a270afc7a60e007a496ccf3291-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Happy Ape Rodeo</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-e50a3ff9f86cfe1c1b5fc8517a6e040b-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Time Has Come</span><audio controls style="display: block"> <source src="http://cdn-preview-6.deezer.com/stream/c-65c9b16e05360c93623e39e71f2fa318-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Kitty Call (Hidden Track)</span><audio controls style="display: block"> <source src="http://cdn-preview-9.deezer.com/stream/c-974bc5aadf77598ba25e4ea81df3d8d0-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Yell</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-dd83f280aa70a1d003f0b248e1516140-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>4Xget</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d6214d62cb113edf348522632296f377-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Morir Cantando</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-48ad4e0e56d61afbb026dd7f8a0cb570-7.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Blacklisted (Live @ Deezer Session)</span><audio controls style="display: block"> <source src="http://cdn-preview-7.deezer.com/stream/c-7ecf53fb36007a7dd199ccc163f123ed-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Wanna Get Free (Live @ Deezer Session)</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d02b67e8462e20619232bfbdda4d766d-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Lucky G1rl (Live @ Deezer Session)</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-3cd90a4f2e6aa9c138a6837ff0824861-4.mp3" type="audio/mpeg"></li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/7084004/image"> <span class="card-title" style="display: inline-block;">Monkeys in Bercy</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Monkeys in Bercy</span><audio controls style="display: block"> <source src="http://cdn-preview-0.deezer.com/stream/c-056cef35fcd4b402c0f67e49601dcc0a-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Intro (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-7.deezer.com/stream/c-7e3b5dccbe8f962e5ed08d4ecd37afdb-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Shiza Radio (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-3d96a865c3b9d442e0693e0f6e34200f-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Reset After All (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-e265f695858bc9507f22324a6ab5dae1-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Hombre Que Soy (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-b.deezer.com/stream/c-b94a7be7b3d25725a95ada1e5b7f3682-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Twisted Minda (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-38bafa59a9550fe282dd196e05af46ea-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Doors (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-e7034caf0c410bc21190fe345f609f55-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Sex Ball (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-443b06fb3165d5934ce321f1d80b77a2-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>I'm Picky (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f963ce51728e18880676e560031899c7-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Let's Bang (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-a.deezer.com/stream/c-a9592cc08e4b4458c3f2fb76bc106a52-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>My Name Is Stain (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-3.deezer.com/stream/c-366e89f55b9b481d8e5a11de1f07d618-1.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Lady (live)</span><audio controls style="display: block"> <source src="http://cdn-preview-b.deezer.com/stream/c-b1093408041b8311e27e2e49c3297bac-1.mp3" type="audio/mpeg"></li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/56633592/image"> <span class="card-title" style="display: inline-block;">Smells Like Teen Spirit</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Smells Like Teen Spirit</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-451485ed9ab0d6cb5a163600d6486381-1.mp3" type="audio/mpeg"></li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/637662/image"> <span class="card-title" style="display: inline-block;">Loco Con Da Frenchy Talkin' (Recycled version 2009)</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Loco Con Da Frenchy Talkin' (Recycled version 2009)</span><audio controls style="display: block"> <source src="http://cdn-preview-7.deezer.com/stream/c-715d7eecb5d2008b1fd0467ebf155308-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Disto Cake</span><audio controls style="display: block"> <source src="http://cdn-preview-1.deezer.com/stream/c-13e41a6e201bce29ad0c94f24d6b858d-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Eh là Mala Lama LAïco</span><audio controls style="display: block"> <source src="http://cdn-preview-6.deezer.com/stream/c-695f2157d772937d5b74839a9e76d111-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Hell'o</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-eb3d01c6b250be6bfd42b915583e82d6-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Body Cult</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-46d67b275151c24f7fe16f8f193ecb20-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Tekno Kills</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-58d71c22dab880e85dd460d4d0708479-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Fonk Me</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-df2842771c0e09173bc817fd7ae80bc6-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Watch'ha</span><audio controls style="display: block"> <source src="http://cdn-preview-f.deezer.com/stream/c-f8eb3d42322e7e1aab41fdf266ba6a3f-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Dot.Coma</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-24e2745f1d9c4dd2a8bffe97de5cc5be-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>My Boom Is Bumping</span><audio controls style="display: block"> <source src="http://cdn-preview-c.deezer.com/stream/c-ce17f8839e52ca55c5519c232f6ed4a5-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Da Teen Town</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d74b38265de3ca7170aff29fced5d829-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Spit Low</span><audio controls style="display: block"> <source src="http://cdn-preview-5.deezer.com/stream/c-5d6c7dfe76fd9297ed9347d7762f1bda-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Popa Booya Boosta can</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-4017a2268006763c219c18cd6fa8ec45-2.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Spit</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-ede688744f57c13e5c77f8612fc2a0f5-4.mp3" type="audio/mpeg"></li>
</div></div></div></div><div class="row"><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/43199651/image"> <span class="card-title" style="display: inline-block;">ApeTizer - EP</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>ApeTizer - EP</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-2bdf924e7c5be3f5d26c2b85ce4e994b-3.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Gung Ho</span><audio controls style="display: block"> <source src="http://cdn-preview-d.deezer.com/stream/c-d39d18c52db8d243baa3a7a9954677f9-5.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Mysterious Ways</span><audio controls style="display: block"> <source src="http://cdn-preview-e.deezer.com/stream/c-ee6b307f0122004e8e46aedbc0177263-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Party</span><audio controls style="display: block"> <source src="http://cdn-preview-6.deezer.com/stream/c-6142fbb8779c84b787175c9636b67959-4.mp3" type="audio/mpeg"></li>
<li class="collection-item blue-grey darken-1"><span>Rocksta (feat. Skin, De Staat & KillASon)</span><audio controls style="display: block"> <source src="http://cdn-preview-4.deezer.com/stream/c-441bebe524c8a7ca1bd88eadd960fdd4-4.mp3" type="audio/mpeg"></li>
</div></div></div><div class="col s12 m6"> <div class="card blue-grey darken-1">
<div class="card-content white-text">
<ul class="collection with-header blue-grey darken-1">
<li class="collection-header blue-grey darken-1"> <div> <img class="responsive-img circle" style="max-height: 50px; max-width: 50px" src="http://api.deezer.com/2.0/album/7327738/image"> <span class="card-title" style="display: inline-block;">Wanna Get Free - Single</span>
</div> </li>
<li class="collection-item blue-grey darken-1"><span>Wanna Get Free - Single</span><audio controls style="display: block"> <source src="http://cdn-preview-2.deezer.com/stream/c-24e73c9faf5904179239df4861828154-4.mp3" type="audio/mpeg"></li>
</div></div></div></div></div></body></body></html>

View File

@ -0,0 +1,2 @@
/.DS_Store
/fr/

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="tp-xml.log" />
<param name="Append" value="false" />
<param name="MaxFileSize" value="5MB"/>
<param name="MaxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p %C - %m\n"/>
</layout>
</appender>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{HH:mm:ss,SSS} %-5p %C - %m\n"/>
</layout>
</appender>
<category name="fr.ensim"
additivity="false">
<level value="debug"/> <!-- Warn | Info | Error | Debug -->
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</category>
</log4j:configuration>

View File

@ -0,0 +1,28 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>tp-deezer3-HerbronTanguy</groupId>
<artifactId>tp-deezer3-HerbronTanguy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<testResources>
<testResource>
<directory>test</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,86 @@
package fr.ensim.xml.deezer;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;
import fr.ensim.xml.deezer.data.Album;
/**
* @author Denis Apparicio
*
*/
public abstract class AbstractSearchAlbum {
private static final Logger LOG = Logger.getLogger(AbstractSearchAlbum.class);
/**
* Restitue la liste des albums d'un auteur.
*
* @param author
* l'auteur.
* @throws IOException
* @throws ParserConfigurationException
* @throws SAXException
*/
public List<Album> find(String author) throws IOException,
ParserConfigurationException,
SAXException {
LOG.debug(">>find author="+author);
// Constitution de l'URL
StringBuilder sUrl = new StringBuilder();
sUrl.append("http://api.deezer.com/2.0/search/album?q=");
sUrl.append(author);
sUrl.append("&output=xml");
URL url = new URL(sUrl.toString());
LOG.debug(url);
HttpURLConnection cnx = (HttpURLConnection) url.openConnection();
List<Album> albums = null;
try {
// recuperation du flux xml
cnx.setConnectTimeout(5000);
cnx.setReadTimeout(5000);
cnx.setRequestMethod("GET");
cnx.setDoInput(true);
cnx.addRequestProperty("Accept-Language", "en;q=0.6,en-us;q=0.4,sv;q=0.2");
if (cnx.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new IOException("http status code " + cnx.getResponseCode());
}
InputStream in = cnx.getInputStream();
// Lecture
albums = readAlbums(in);
}
catch(Exception e) {
LOG.error("", e);
}
finally {
cnx.disconnect();
}
LOG.debug("<<find");
return albums;
}
/**
* Restitue la liste des albums à partir du flux xml.
*
* @param in
* le flux xml.
* @return la liste des albums.
*/
public abstract List<Album> readAlbums(InputStream in) throws Exception;
}

View File

@ -0,0 +1,70 @@
package fr.ensim.xml.deezer;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import org.apache.log4j.Logger;
import fr.ensim.xml.deezer.data.Track;
/**
* @author Denis Apparicio
*
*/
public abstract class AbstractSearchAlbumTracks {
private static Logger log = Logger.getLogger(AbstractSearchAlbumTracks.class);
/**
* Restitue la liste des chansons d'un album.
*
* @param id
* id de l'album.
* @return la liste des chansons.
* @throws Exception
*/
public List<Track> find(String id) throws Exception {
log.debug(">>find");
// Constitution de l'URL
StringBuilder sUrl = new StringBuilder();
sUrl.append("http://api.deezer.com/2.0/album/");
sUrl.append(id);
sUrl.append("?output=xml");
URL url = new URL(sUrl.toString());
log.debug(url);
HttpURLConnection cnx = (HttpURLConnection) url.openConnection();
cnx.setConnectTimeout(5000);
cnx.setReadTimeout(5000);
cnx.setRequestMethod("GET");
cnx.setDoInput(true);
cnx.addRequestProperty("Accept-Language", "en;q=0.6,en-us;q=0.4,sv;q=0.2");
try {
if (cnx.getResponseCode() == HttpURLConnection.HTTP_OK) {
return readTrack(cnx.getInputStream());
}
}
finally {
cnx.disconnect();
}
log.debug("<<find");
return null;
}
/**
* Restitue la liste des chansons d'un album &agrave; partir d'un flux.
*
* @param in
* le flux.
* @return la liste des chansons.
* @throws Exception
*/
public abstract List<Track> readTrack(InputStream in) throws Exception;
}

View File

@ -0,0 +1,81 @@
package fr.ensim.xml.deezer;
import static org.junit.Assert.fail;
import java.awt.Desktop;
import java.awt.Desktop.Action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import fr.ensim.xml.deezer.data.Album;
import fr.ensim.xml.deezer.data.Track;
import fr.ensim.xml.deezer.dom.SearchAlbumTracks;
import fr.ensim.xml.deezer.sax.SAXSearchAlbums;
import fr.ensim.xml.deezer.stax.HtmlAlbum;
/**
* @author Denis Apparicio
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// configuration du proxy et des logs
DOMConfigurator.configure("log4J.xml");
ProxyConfiguration.configure();
Logger log = Logger.getLogger(Main.class);
FileOutputStream out = null;
try {
List<Album> listAlbum = new SAXSearchAlbums().find("Shaka%20Ponk");
// recuperation des titres de l album
for(int i = 0; i < listAlbum.size(); i++)
{
listAlbum.get(i).setTracks(SearchAlbumTracks.find(listAlbum.get(i).getId()));
}
// Ecriture de la page html
File fileHtml = new File(listAlbum.get(0).getArtist().getName() + ".html");
out = new FileOutputStream(fileHtml);
HtmlAlbum.write(listAlbum, out);
out.close();
// Ouverture de la page
if (fileHtml.isFile()) {
if (Desktop.isDesktopSupported()
&& Desktop.getDesktop().isSupported(Action.BROWSE)) {
Desktop.getDesktop().browse(fileHtml.toURI());
}
}
}
catch (Exception e) {
log.error("", e);
fail(e.getMessage());
}
finally {
try {
if (out != null) {
out.close();
}
}
catch (IOException e) {
log.error("", e);
}
}
log.debug("<<main");
}
}

View File

@ -0,0 +1,21 @@
package fr.ensim.xml.deezer;
/**
* Configuration du proxy pac de l'ensim.
*
* @author Denis Apparicio
*
*/
public class ProxyConfiguration {
private ProxyConfiguration() {
}
/**
* Configuration du proxy.
*/
public static void configure() {
System.setProperty("http.proxyHost", "vproxy.univ-lemans.fr");
System.setProperty("http.proxyPort", "3128");
}
}

View File

@ -0,0 +1,68 @@
package fr.ensim.xml.deezer.data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Denis Apparicio
*/
public class Album {
private Artist artist;
private String id;
private String title;
private String cover;
private List<Track> tracks = new ArrayList<Track>();
public Album() {
}
public void addTrack(Track title) {
tracks.add(title);
}
public List<Track> getTracks() {
return tracks;
}
public void setTracks(List<Track> tracks) {
this.tracks = tracks;
}
public Artist getArtist() {
return artist;
}
public void setArtist(Artist artist) {
this.artist = artist;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}

View File

@ -0,0 +1,48 @@
package fr.ensim.xml.deezer.data;
/**
* @author Denis Apparicio
*/
public class Artist {
private String id;
private String name;
private String link;
private String picture;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
}

View File

@ -0,0 +1,40 @@
package fr.ensim.xml.deezer.data;
/**
*
* @author Denis Apparicio
*
*/
public class Track {
private String title;
private String preview;
public Track() {
super();
}
public Track(String title, String preview) {
super();
this.title = title;
this.preview = preview;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPreview() {
return preview;
}
public void setPreview(String preview) {
this.preview = preview;
}
}

View File

@ -0,0 +1,43 @@
package fr.ensim.xml.deezer.dom;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;
import fr.ensim.xml.deezer.AbstractSearchAlbum;
import fr.ensim.xml.deezer.data.Album;
/**
* @author Denis Apparicio
*
*/
public class DOMSearchAlbums extends AbstractSearchAlbum {
private static final Logger LOG = Logger.getLogger(DOMSearchAlbumsTest.class);
/*
* (non-Javadoc)
*
* @see
* fr.ensim.xml.deezer.AbstractSearchAlbum#readAlbums(java.io.InputStream)
*/
@Override
public List<Album> readAlbums(InputStream in) throws ParserConfigurationException,
SAXException,
IOException {
LOG.debug(">>readAlbums");
List<Album> listAlbums = new ArrayList<Album>();
//TODO Recherche les albums en DOM
LOG.debug("<<readAlbums");
return listAlbums;
}
}

View File

@ -0,0 +1,150 @@
package fr.ensim.xml.deezer.dom;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import fr.ensim.xml.deezer.data.Track;
/**
* @author Denis Apparicio
*
*/
public class SearchAlbumTracks {
private static Logger log = Logger.getLogger(SearchAlbumTracks.class);
/**
* Restitue la liste des chansons d'un album.
*
* @param id
* id de l'album.
* @return la liste des chansons.
* @throws IOException
* @throws ParserConfigurationException
* @throws SAXException
*/
private static Track buildingTrack;
public static List<Track> find(String id) throws IOException,
ParserConfigurationException,
SAXException {
log.debug(">>albums");
// Constitution de l'URL
StringBuilder sUrl = new StringBuilder();
sUrl.append("http://api.deezer.com/2.0/album/");
sUrl.append(id);
sUrl.append("?output=xml");
URL url = new URL(sUrl.toString());
log.debug(url);
HttpURLConnection cnx = (HttpURLConnection) url.openConnection();
cnx.setConnectTimeout(5000);
cnx.setReadTimeout(5000);
cnx.setRequestMethod("GET");
cnx.setDoInput(true);
cnx.addRequestProperty("Accept-Language", "en;q=0.6,en-us;q=0.4,sv;q=0.2");
try {
if (cnx.getResponseCode() == HttpURLConnection.HTTP_OK) {
return find(cnx.getInputStream());
}
}
finally {
cnx.disconnect();
}
log.debug("<<albums");
return null;
}
/**
* Restitue la liste des chansons d'un album &agrave; partir d'un flux.
*
* @param in
* le flux.
* @return la liste des chansons.
* @throws SAXException
* @throws ParserConfigurationException
* @throws IOException
*/
protected static List<Track> find(InputStream in) throws SAXException,
ParserConfigurationException,
IOException {
log.debug(">>find");
ArrayList<Track> listTracks = new ArrayList<Track>();
//TODO Recherche les pistes d'albums en DOM
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(in);
doc.normalize();
parseChildElements(doc.getDocumentElement(), listTracks);
log.debug(">>find");
return listTracks;
}
private static boolean isTrackBeingRead;
private static void parseChildElements(Element el, List<Track> listTracks)
{
if(el.getNodeName().equals("track"))
{
isTrackBeingRead = true;
if(isTrackBeingRead)
{
if(buildingTrack != null)
{
listTracks.add(buildingTrack);
}
buildingTrack = new Track();
}
}
if(isTrackBeingRead)
{
switch(el.getNodeName())
{
case "title":
buildingTrack.setTitle(el.getTextContent());
break;
case "preview":
buildingTrack.setPreview(el.getTextContent());
break;
}
}
NodeList nl = el.getChildNodes();
for(int i = 0; i < nl.getLength(); i++)
{
Node n = nl.item(i);
if(n instanceof Element)
{
parseChildElements((Element) n, listTracks);
}
}
}
}

View File

@ -0,0 +1,51 @@
package fr.ensim.xml.deezer.sax;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;
import fr.ensim.xml.deezer.AbstractSearchAlbum;
import fr.ensim.xml.deezer.data.Album;
/**
* @author Denis Apparicio
*
*/
public class SAXSearchAlbums extends AbstractSearchAlbum {
private static final Logger LOG = Logger.getLogger(SAXSearchAlbums.class);
@Override
public List<Album> readAlbums(InputStream in) {
LOG.debug(">>readAlbums");
//TODO Recherche les albums en SAX
SAXSearchAlbumsHandler handler = new SAXSearchAlbumsHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
try {
SAXParser parser = factory.newSAXParser();
parser.parse(in, handler);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
LOG.error("ParserConfigurationException", e);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
LOG.debug("<<readAlbums");
return handler.getListAlbum();
}
}

View File

@ -0,0 +1,127 @@
package fr.ensim.xml.deezer.sax;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import fr.ensim.xml.deezer.data.Album;
import fr.ensim.xml.deezer.data.Artist;
/**
* @author Denis Apparicio
*
*/
public class SAXSearchAlbumsHandler extends DefaultHandler {
private static final Logger LOG = Logger.getLogger(SAXSearchAlbumsHandler.class);
private List<Album> listAlbum = new ArrayList<Album>();
private String val;
private Album buildingAlbum;
private Artist buildingArtist;
private boolean isArtist;
/**
* Restitue la liste des albums.
*
* @return la liste des albums.
*/
public List<Album> getListAlbum() {
return listAlbum;
}
/*
* (non-Javadoc)
*
* @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String,
* java.lang.String, java.lang.String, org.xml.sax.Attributes)
*/
@Override
public void startElement(String uri,
String localName,
String qName,
Attributes attributes) throws SAXException {
if(localName.equals("album"))
{
buildingAlbum = new Album();
}
if(localName.equals("artist"))
{
buildingArtist = new Artist();
isArtist = true;
}
}
/*
* (non-Javadoc) BufferedReader
*
* @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
* java.lang.String, java.lang.String)
*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
switch(localName)
{
case "album":
listAlbum.add(buildingAlbum);
break;
case "id":
updateId();
break;
case "title":
if(buildingAlbum != null) buildingAlbum.setTitle(val);
break;
case "cover":
if(buildingAlbum != null) buildingAlbum.setCover(val);
break;
case "name":
buildingArtist.setName(val);
break;
case "link":
updateLink();
break;
case "picture":
buildingArtist.setPicture(val);
break;
case "artist":
buildingAlbum.setArtist(buildingArtist);
isArtist = false;
break;
}
}
private void updateLink()
{
if(isArtist)
{
buildingArtist.setLink(val);
}
}
private void updateId()
{
if(isArtist)
{
buildingArtist.setId(val);
}
else
{
buildingAlbum.setId(val);
}
}
/*
* (non-Javadoc)
*
* @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
*/
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
val = new String(ch, start, length);
}
}

View File

@ -0,0 +1,134 @@
package fr.ensim.xml.deezer.stax;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.NavigableMap;
import javax.xml.stream.XMLStreamException;
import org.apache.log4j.Logger;
import com.hp.gagawa.java.Document;
import com.hp.gagawa.java.DocumentType;
import com.hp.gagawa.java.elements.A;
import com.hp.gagawa.java.elements.Body;
import com.hp.gagawa.java.elements.Div;
import com.hp.gagawa.java.elements.Head;
import com.hp.gagawa.java.elements.Img;
import com.hp.gagawa.java.elements.Link;
import com.hp.gagawa.java.elements.Script;
import com.hp.gagawa.java.elements.Style;
import fr.ensim.xml.deezer.data.Album;
import fr.ensim.xml.deezer.data.Track;
/**
* @author Denis Apparicio
*
*/
public class HtmlAlbum {
private static Logger log = Logger.getLogger(HtmlAlbum.class);
/**
* Ecriture de la page HTML avec StAX.
*
* @param album
* @param out
* @throws XMLStreamException
* @throws IOException
*/
public static void write(List<Album> albums, OutputStream outputStream) throws XMLStreamException,
IOException {
log.debug(">>write");
Document document = new Document(DocumentType.HTMLTransitional);
Head head = new Head();
Link cssLink = new Link();
cssLink.setRel("stylesheet").setHref("https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css");
Script matScript = new Script(null);
matScript.setSrc("https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js");
head.appendChild(cssLink);
head.appendChild(matScript);
Body body = new Body();
Div navDiv = new Div();
navDiv.appendText(
"<nav style=\"background-color: #3A3A3A\">\r\n" +
" <div class=\"nav-wrapper\">\r\n" +
" <a href=\"#\" class=\"brand-logo\">" + albums.get(0).getArtist().getName() + "</a>\r\n" +
" </div>\r\n" +
" </nav>");
body.appendChild(navDiv);
Div container = new Div();
container.setCSSClass("container");
int i = 0;
while(i < albums.size())
{
Div row = new Div();
row.setCSSClass("row");
row.appendChild(createAlbumCard(albums.get(i).getTitle()
, albums.get(i).getCover()
, albums.get(i).getTracks()));
if(albums.size() > i+1)
{
i++;
row.appendChild(createAlbumCard(albums.get(i).getTitle()
, albums.get(i).getCover()
, albums.get(i).getTracks()));
}
i++;
container.appendChild(row);
}
body.appendChild(container);
document.head.appendChild(head);
document.body.appendChild(body);
PrintWriter p = new PrintWriter(outputStream);
p.write(document.write());
p.close();
log.debug("<<write");
}
private static Div createAlbumCard(String title, String cover, List<Track> tracks)
{
Div div = new Div().setCSSClass("col s12 m6").appendText(
" <div class=\"card blue-grey darken-1\">\r\n" +
" <div class=\"card-content white-text\">\r\n" +
" <ul class=\"collection with-header blue-grey darken-1\">\r\n" +
" <li class=\"collection-header blue-grey darken-1\">" +
" <div>" +
" <img class=\"responsive-img circle\" style=\"max-height: 50px; max-width: 50px\" src=\"" + cover + "\">" +
" <span class=\"card-title\" style=\"display: inline-block;\">" + title + "</span>\r\n" +
" </div>" +
" </li>\r\n");
for(int i = 0; i < tracks.size(); i++)
{
div.appendText("<li class=\"collection-item blue-grey darken-1\"><span>" + tracks.get(i).getTitle() + "</span>"
+ "<audio controls style=\"display: block\">"
+ " <source src=\"" + tracks.get(i).getPreview() + "\" type=\"audio/mpeg\">"
+ "</li>\r\n");
}
div.appendText("</div></div>");
return div;
}
}

View File

@ -0,0 +1,55 @@
package fr.ensim.xml.deezer.stax;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.stream.XMLStreamException;
import org.apache.log4j.Logger;
import fr.ensim.xml.deezer.AbstractSearchAlbum;
import fr.ensim.xml.deezer.data.Album;
/**
* @author Denis Apparicio
*
*/
public class StAXSearchAlbums extends AbstractSearchAlbum {
private static final Logger LOG = Logger.getLogger(StAXSearchAlbums.class);
/**
* Compte le nombre d'albums.
*
* @param in
* le flux xml.
* @return le nombre d'albums.
* @throws XMLStreamException
*/
public int count(InputStream in) throws XMLStreamException {
LOG.debug(">>count");
int nbAlbums = 0;
// recuperation d'un parser StAX
// @ TODO
LOG.debug("<<count " + nbAlbums);
return nbAlbums;
}
@Override
public List<Album> readAlbums(InputStream in) throws XMLStreamException {
LOG.debug(">>readAlbums");
List<Album> listAlbums = new ArrayList<Album>();
// recuperation d'un parser StAX
// @ TODO
// parsing
// @ TODO
LOG.debug("<<readAlbums");
return listAlbums;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,15 @@
package fr.ensim.xml.deezer;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import fr.ensim.xml.deezer.dom.DOMSearchAlbumsTest;
import fr.ensim.xml.deezer.sax.SAXSearchAlbumsTest;
import fr.ensim.xml.deezer.stax.StAXSearchAlbumsTest;
@RunWith(Suite.class)
@SuiteClasses({ DOMSearchAlbumsTest.class, SAXSearchAlbumsTest.class, StAXSearchAlbumsTest.class})
public class AllTests {
}

View File

@ -0,0 +1,447 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<id><![CDATA[68670211]]></id>
<title><![CDATA[Stup Virus]]></title>
<upc><![CDATA[3614974290199]]></upc>
<link><![CDATA[http://www.deezer.com/album/68670211]]></link>
<share><![CDATA[https://www.deezer.com/album/68670211?utm_source=deezer&utm_content=album-68670211&utm_term=0_1538331853&utm_medium=web]]></share>
<cover><![CDATA[http://api.deezer.com/2.0/album/68670211/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/f4bef1329a56c71595e1cedcf3832ea0/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/f4bef1329a56c71595e1cedcf3832ea0/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/f4bef1329a56c71595e1cedcf3832ea0/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/f4bef1329a56c71595e1cedcf3832ea0/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[116]]></genre_id>
<genres>
<data>
<genre>
<id><![CDATA[116]]></id>
<name><![CDATA[Rap/Hip Hop]]></name>
<picture><![CDATA[http://api.deezer.com/2.0/genre/116/image]]></picture>
<type><![CDATA[genre]]></type>
</genre>
</data>
</genres>
<label><![CDATA[Etic System]]></label>
<nb_tracks><![CDATA[19]]></nb_tracks>
<duration><![CDATA[3656]]></duration>
<fans><![CDATA[2247]]></fans>
<rating><![CDATA[0]]></rating>
<release_date><![CDATA[2017-07-24]]></release_date>
<record_type><![CDATA[album]]></record_type>
<available><![CDATA[1]]></available>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/68670211/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<contributors>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<link><![CDATA[http://www.deezer.com/artist/939]]></link>
<share><![CDATA[https://www.deezer.com/artist/939?utm_source=deezer&utm_content=artist-939&utm_term=0_1538331853&utm_medium=web]]></share>
<picture><![CDATA[http://api.deezer.com/2.0/artist/939/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<radio><![CDATA[1]]></radio>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
<role><![CDATA[Main]]></role>
</artist>
</contributors>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<picture><![CDATA[http://api.deezer.com/2.0/artist/939/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/8a0db002f854ed9b12c105621bc400df/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
<tracks>
<data>
<track>
<id><![CDATA[530221061]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Intro]]></title>
<title_short><![CDATA[Intro]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221061]]></link>
<duration><![CDATA[41]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-f.deezer.com/stream/c-f4d3cef094894988635ab62f1e8d6c4e-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221071]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[The Antidote]]></title>
<title_short><![CDATA[The Antidote]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221071]]></link>
<duration><![CDATA[198]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-a.deezer.com/stream/c-ac96a1f36c1ffe00fa17919160081e77-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221081]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Creepy Slugs]]></title>
<title_short><![CDATA[Creepy Slugs]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221081]]></link>
<duration><![CDATA[232]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-3.deezer.com/stream/c-3b04b6dd226400f809c8fb4f447f2e85-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221091]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Cosmocrou]]></title>
<title_short><![CDATA[Cosmocrou]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221091]]></link>
<duration><![CDATA[45]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-1.deezer.com/stream/c-16bddd18bdafc420f1a4e46c4bf1ca85-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221101]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[La seule alternative]]></title>
<title_short><![CDATA[La seule alternative]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221101]]></link>
<duration><![CDATA[188]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-f.deezer.com/stream/c-f2464e36b6de296f10a2b7b1fd0fc9e3-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221111]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[The Solution]]></title>
<title_short><![CDATA[The Solution]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221111]]></link>
<duration><![CDATA[242]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-b.deezer.com/stream/c-b6db7c7d3385d50bc23c1bbcee2afb2b-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221121]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Knights of Chaos]]></title>
<title_short><![CDATA[Knights of Chaos]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221121]]></link>
<duration><![CDATA[74]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-2.deezer.com/stream/c-2f72e5564cf0360eefb6f3ed282cf970-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221131]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Stup Virus]]></title>
<title_short><![CDATA[Stup Virus]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221131]]></link>
<duration><![CDATA[193]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-c.deezer.com/stream/c-c94b4ee088362d6a3f42fbeb5c0dfcef-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221141]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Des nouvelles de pop-hip]]></title>
<title_short><![CDATA[Des nouvelles de pop-hip]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221141]]></link>
<duration><![CDATA[35]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-8.deezer.com/stream/c-83d9f88302688909b08bc002c3b6feb1-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221151]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Lonely Loverz]]></title>
<title_short><![CDATA[Lonely Loverz]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221151]]></link>
<duration><![CDATA[213]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-0.deezer.com/stream/c-0dc3913208728a9af3042d59656b71fa-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221161]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Understup]]></title>
<title_short><![CDATA[Understup]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221161]]></link>
<duration><![CDATA[217]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-c.deezer.com/stream/c-cf534fc01814b858f5d188dfcad2949d-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221171]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Stalactites]]></title>
<title_short><![CDATA[Stalactites]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221171]]></link>
<duration><![CDATA[173]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-0.deezer.com/stream/c-05ad5178982b8682cbef167ec77c7328-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221181]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Fou-Fou]]></title>
<title_short><![CDATA[Fou-Fou]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221181]]></link>
<duration><![CDATA[45]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-1.deezer.com/stream/c-1767907bea9d6e96335e2f1322c9635f-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221191]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[1993]]></title>
<title_short><![CDATA[1993]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221191]]></link>
<duration><![CDATA[171]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-6.deezer.com/stream/c-6ab0c7e4c7e0a585f693530f9fc337af-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221201]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Grosse tête]]></title>
<title_short><![CDATA[Grosse tête]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221201]]></link>
<duration><![CDATA[47]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-2.deezer.com/stream/c-2756014de7c4a58aa5d7f75ee66a919a-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221211]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Crou Anthem]]></title>
<title_short><![CDATA[Crou Anthem]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221211]]></link>
<duration><![CDATA[184]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-4.deezer.com/stream/c-426bb5b3efef76bc847e22777ea7b830-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221221]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Forcefield]]></title>
<title_short><![CDATA[Forcefield]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221221]]></link>
<duration><![CDATA[130]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-4.deezer.com/stream/c-486da7a95f0a6f57ab9367d3381fd917-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221231]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Le trou noir]]></title>
<title_short><![CDATA[Le trou noir]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221231]]></link>
<duration><![CDATA[304]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-d.deezer.com/stream/c-d3717dfd6f58407df5551af6415a86e2-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
<track>
<id><![CDATA[530221241]]></id>
<readable><![CDATA[1]]></readable>
<title><![CDATA[Pleure pas Stupeflip]]></title>
<title_short><![CDATA[Pleure pas Stupeflip]]></title_short>
<title_version><![CDATA[]]>
</title_version>
<link><![CDATA[http://www.deezer.com/track/530221241]]></link>
<duration><![CDATA[924]]></duration>
<rank><![CDATA[656838]]></rank>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<preview><![CDATA[http://cdn-preview-3.deezer.com/stream/c-3f5d5c62d6f542fc02f044e5a75c832c-3.mp3]]></preview>
<artist>
<id><![CDATA[939]]></id>
<name><![CDATA[STUPEFLIP]]></name>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/939/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[track]]></type>
</track>
</data>
</tracks>
</root>

View File

@ -0,0 +1,32 @@
package fr.ensim.xml.deezer.dom;
import java.io.InputStream;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.junit.Test;
/**
* @author Denis Apparicio
*
*/
public class DOMSearchAlbumsTest {
static {
DOMConfigurator.configure("log4J.xml");
}
private static final Logger LOG = Logger
.getLogger(DOMSearchAlbumsTest.class);
@Test
public void testParse() {
LOG.debug(">>testParse");
// Recuperation du flux a parser
InputStream in = getClass().getResourceAsStream("../album-stupeflip.xml");
//TODO
LOG.debug("<<testParse");
}
}

View File

@ -0,0 +1,67 @@
package fr.ensim.xml.deezer.dom;
import static org.junit.Assert.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import fr.ensim.xml.deezer.sax.SAXSearchAlbumsHandler;
import fr.ensim.xml.deezer.sax.SAXSearchAlbumsTest;
public class SearchAlbumTracksTest {
static {
DOMConfigurator.configure("log4J.xml");
}
private static final Logger LOG = Logger.getLogger(SearchAlbumTracksTest.class);
@Test
public void test() throws ParserConfigurationException, SAXException, IOException {
LOG.debug(">>testParse");
// Recuperation du flux a parser
InputStream in = getClass().getResourceAsStream("../album-stupeflip.xml");
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAXParser parser = factory.newSAXParser();
// constitution du flux xml
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
InputSource source = new InputSource(reader);
// parsing
SAXSearchAlbumsHandler handler = new SAXSearchAlbumsHandler();
parser.parse(source, handler);
assertEquals(10, handler.getListAlbum().size());
//First album
assertEquals("47685332", handler.getListAlbum().get(0).getId());
assertEquals("The Evol", handler.getListAlbum().get(0).getTitle());
assertEquals("http://api.deezer.com/2.0/album/47685332/image", handler.getListAlbum().get(0).getCover());
assertEquals("83325", handler.getListAlbum().get(0).getArtist().getId());
assertEquals("Shaka Ponk", handler.getListAlbum().get(0).getArtist().getName());
//Second album
assertEquals("1121440", handler.getListAlbum().get(1).getId());
assertEquals("The Geeks And The Jerkin' Socks", handler.getListAlbum().get(1).getTitle());
assertEquals("http://api.deezer.com/2.0/album/1121440/image", handler.getListAlbum().get(1).getCover());
assertEquals("83325", handler.getListAlbum().get(1).getArtist().getId());
assertEquals("Shaka Ponk", handler.getListAlbum().get(1).getArtist().getName());
LOG.debug("<<testParse");
}
}

View File

@ -0,0 +1,286 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data>
<album>
<id><![CDATA[47685332]]></id>
<title><![CDATA[The Evol]]></title>
<link><![CDATA[http://www.deezer.com/album/47685332]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/47685332/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/af85cc0e970fb3b7dd02776d66a9be2b/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/af85cc0e970fb3b7dd02776d66a9be2b/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/af85cc0e970fb3b7dd02776d66a9be2b/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/af85cc0e970fb3b7dd02776d66a9be2b/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[13]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/47685332/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[1121440]]></id>
<title><![CDATA[The Geeks And The Jerkin' Socks]]></title>
<link><![CDATA[http://www.deezer.com/album/1121440]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/1121440/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/cea1e3ee735c24489492696e90f65803/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/cea1e3ee735c24489492696e90f65803/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/cea1e3ee735c24489492696e90f65803/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/cea1e3ee735c24489492696e90f65803/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[12]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/1121440/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[7529289]]></id>
<title><![CDATA[The White Pixel Ape (Smoking Isolate to Keep in Shape)]]></title>
<link><![CDATA[http://www.deezer.com/album/7529289]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/7529289/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/1fd91dd0716a4ffe9c4724b3e1950347/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/1fd91dd0716a4ffe9c4724b3e1950347/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/1fd91dd0716a4ffe9c4724b3e1950347/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/1fd91dd0716a4ffe9c4724b3e1950347/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[13]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/7529289/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[625593]]></id>
<title><![CDATA[Bad Porn Movie Trax]]></title>
<link><![CDATA[http://www.deezer.com/album/625593]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/625593/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/5d52028c2f550e1265335ea6cb5e37ff/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/5d52028c2f550e1265335ea6cb5e37ff/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/5d52028c2f550e1265335ea6cb5e37ff/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/5d52028c2f550e1265335ea6cb5e37ff/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[16]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/625593/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[8910295]]></id>
<title><![CDATA[The Black Pixel Ape (Drinking Cigarettes to Take a Break) [Deezer Edition]]]></title>
<link><![CDATA[http://www.deezer.com/album/8910295]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/8910295/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/f33c581efd41ac305d72a6602a2db624/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/f33c581efd41ac305d72a6602a2db624/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/f33c581efd41ac305d72a6602a2db624/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/f33c581efd41ac305d72a6602a2db624/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[17]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/8910295/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[7084004]]></id>
<title><![CDATA[Monkeys in Bercy]]></title>
<link><![CDATA[http://www.deezer.com/album/7084004]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/7084004/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/3ab1b7ac1cb01b5e73dd01d5f8a19a4b/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/3ab1b7ac1cb01b5e73dd01d5f8a19a4b/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/3ab1b7ac1cb01b5e73dd01d5f8a19a4b/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/3ab1b7ac1cb01b5e73dd01d5f8a19a4b/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[12]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/7084004/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[56633592]]></id>
<title><![CDATA[Smells Like Teen Spirit]]></title>
<link><![CDATA[http://www.deezer.com/album/56633592]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/56633592/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/af500ba0d1838cab1f9779b7605a37cc/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/af500ba0d1838cab1f9779b7605a37cc/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/af500ba0d1838cab1f9779b7605a37cc/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/af500ba0d1838cab1f9779b7605a37cc/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[1]]></nb_tracks>
<record_type><![CDATA[single]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/56633592/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[637662]]></id>
<title><![CDATA[Loco Con Da Frenchy Talkin' (Recycled version 2009)]]></title>
<link><![CDATA[http://www.deezer.com/album/637662]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/637662/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/c1eb904c3050f56e41283b1e6e83c2fc/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/c1eb904c3050f56e41283b1e6e83c2fc/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/c1eb904c3050f56e41283b1e6e83c2fc/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/c1eb904c3050f56e41283b1e6e83c2fc/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[132]]></genre_id>
<nb_tracks><![CDATA[14]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/637662/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[43199651]]></id>
<title><![CDATA[ApeTizer - EP]]></title>
<link><![CDATA[http://www.deezer.com/album/43199651]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/43199651/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/62fabec2b9af045eff84a5872bb6b6a7/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/62fabec2b9af045eff84a5872bb6b6a7/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/62fabec2b9af045eff84a5872bb6b6a7/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/62fabec2b9af045eff84a5872bb6b6a7/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[5]]></nb_tracks>
<record_type><![CDATA[album]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/43199651/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
<album>
<id><![CDATA[7327738]]></id>
<title><![CDATA[Wanna Get Free - Single]]></title>
<link><![CDATA[http://www.deezer.com/album/7327738]]></link>
<cover><![CDATA[http://api.deezer.com/2.0/album/7327738/image]]></cover>
<cover_small><![CDATA[http://e-cdn-images.deezer.com/images/cover/b7dd87782136109416a72a55e5571de4/56x56-000000-80-0-0.jpg]]></cover_small>
<cover_medium><![CDATA[http://e-cdn-images.deezer.com/images/cover/b7dd87782136109416a72a55e5571de4/250x250-000000-80-0-0.jpg]]></cover_medium>
<cover_big><![CDATA[http://e-cdn-images.deezer.com/images/cover/b7dd87782136109416a72a55e5571de4/500x500-000000-80-0-0.jpg]]></cover_big>
<cover_xl><![CDATA[http://e-cdn-images.deezer.com/images/cover/b7dd87782136109416a72a55e5571de4/1000x1000-000000-80-0-0.jpg]]></cover_xl>
<genre_id><![CDATA[152]]></genre_id>
<nb_tracks><![CDATA[1]]></nb_tracks>
<record_type><![CDATA[single]]></record_type>
<tracklist><![CDATA[http://api.deezer.com/2.0/album/7327738/tracks]]></tracklist>
<explicit_lyrics><![CDATA[0]]></explicit_lyrics>
<artist>
<id><![CDATA[83325]]></id>
<name><![CDATA[Shaka Ponk]]></name>
<link><![CDATA[http://www.deezer.com/artist/83325]]></link>
<picture><![CDATA[http://api.deezer.com/2.0/artist/83325/image]]></picture>
<picture_small><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/56x56-000000-80-0-0.jpg]]></picture_small>
<picture_medium><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/250x250-000000-80-0-0.jpg]]></picture_medium>
<picture_big><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/500x500-000000-80-0-0.jpg]]></picture_big>
<picture_xl><![CDATA[http://e-cdn-images.deezer.com/images/artist/02e237973b38db56e35e9eac2ab9671a/1000x1000-000000-80-0-0.jpg]]></picture_xl>
<tracklist><![CDATA[http://api.deezer.com/2.0/artist/83325/top?limit=50]]></tracklist>
<type><![CDATA[artist]]></type>
</artist>
<type><![CDATA[album]]></type>
</album>
</data>
<total><![CDATA[10]]></total>
</root>

View File

@ -0,0 +1,69 @@
package fr.ensim.xml.deezer.sax;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* @author Denis Apparicio
*
*/
public class SAXSearchAlbumsTest {
static {
DOMConfigurator.configure("log4J.xml");
}
private static final Logger LOG = Logger.getLogger(SAXSearchAlbumsTest.class);
@Test
public void testParse() throws ParserConfigurationException, SAXException, IOException {
LOG.debug(">>testParse");
// Recuperation du flux a parser
InputStream in = getClass().getResourceAsStream("../list-albums.xml");
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAXParser parser = factory.newSAXParser();
// constitution du flux xml
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
InputSource source = new InputSource(reader);
// parsing
SAXSearchAlbumsHandler handler = new SAXSearchAlbumsHandler();
parser.parse(source, handler);
assertEquals(10, handler.getListAlbum().size());
//First album
assertEquals("47685332", handler.getListAlbum().get(0).getId());
assertEquals("The Evol", handler.getListAlbum().get(0).getTitle());
assertEquals("http://api.deezer.com/2.0/album/47685332/image", handler.getListAlbum().get(0).getCover());
assertEquals("83325", handler.getListAlbum().get(0).getArtist().getId());
assertEquals("Shaka Ponk", handler.getListAlbum().get(0).getArtist().getName());
//Second album
assertEquals("1121440", handler.getListAlbum().get(1).getId());
assertEquals("The Geeks And The Jerkin' Socks", handler.getListAlbum().get(1).getTitle());
assertEquals("http://api.deezer.com/2.0/album/1121440/image", handler.getListAlbum().get(1).getCover());
assertEquals("83325", handler.getListAlbum().get(1).getArtist().getId());
assertEquals("Shaka Ponk", handler.getListAlbum().get(1).getArtist().getName());
LOG.debug("<<testParse");
}
}

View File

@ -0,0 +1,44 @@
package fr.ensim.xml.deezer.stax;
import java.io.InputStream;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.junit.Test;
/**
* @author Denis Apparicio
*
*/
public class StAXSearchAlbumsTest {
static {
DOMConfigurator.configure("log4J.xml");
}
private static final Logger LOG = Logger
.getLogger(StAXSearchAlbumsTest.class);
@Test
public void testCount() {
LOG.debug(">>testCount");
// Recuperation du flux a parser
InputStream in = getClass().getResourceAsStream("../album-stupeflip.xml");
//TODO
LOG.debug("<<testCount");
}
@Test
public void testParse() {
LOG.debug(">>testParse");
// Recuperation du flux a parser
InputStream in = getClass().getResourceAsStream("album-stupeflip.xml");
//TODO
LOG.debug("<<testParse");
}
}

View File

@ -0,0 +1,48 @@
19:05:44,335 DEBUG fr.ensim.xml.deezer.AbstractSearchAlbum - >>find author=Shaka%20Ponk
19:05:44,337 DEBUG fr.ensim.xml.deezer.AbstractSearchAlbum - http://api.deezer.com/2.0/search/album?q=Shaka%20Ponk&output=xml
19:05:49,606 DEBUG fr.ensim.xml.deezer.sax.SAXSearchAlbums - >>readAlbums
19:05:49,640 DEBUG fr.ensim.xml.deezer.sax.SAXSearchAlbums - <<readAlbums
19:05:49,641 DEBUG fr.ensim.xml.deezer.AbstractSearchAlbum - <<find
19:05:49,641 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:05:49,641 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/47685332?output=xml
19:05:54,764 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:05:54,792 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:05:54,793 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:05:54,793 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/1121440?output=xml
19:05:59,968 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:05:59,980 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:05:59,981 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:05:59,981 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/7529289?output=xml
19:06:05,117 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:05,160 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:05,161 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:05,161 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/625593?output=xml
19:06:10,336 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:10,366 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:10,367 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:10,367 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/8910295?output=xml
19:06:15,501 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:15,533 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:15,534 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:15,534 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/7084004?output=xml
19:06:20,680 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:20,728 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:20,728 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:20,728 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/56633592?output=xml
19:06:25,858 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:25,861 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:25,861 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:25,861 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/637662?output=xml
19:06:30,979 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:31,007 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:31,007 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:31,008 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/43199651?output=xml
19:06:36,143 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:36,150 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:36,150 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>albums
19:06:36,150 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - http://api.deezer.com/2.0/album/7327738?output=xml
19:06:41,280 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:41,284 DEBUG fr.ensim.xml.deezer.dom.SearchAlbumTracks - >>find
19:06:41,288 DEBUG fr.ensim.xml.deezer.stax.HtmlAlbum - >>write
19:06:41,303 DEBUG fr.ensim.xml.deezer.stax.HtmlAlbum - <<write
19:06:41,742 DEBUG fr.ensim.xml.deezer.Main - <<main