Atom Reader - Windows Phone (Opgelost)
larssy1 - 14/10/2011 14:40
MySQL beginner
Hey mensen,
Ik vroeg mij af of iemand een RSS Reader weet dat Atom format kan uitlezen.
Ik heb het geprobeerd met verschillende atom readers, maar daarbij lukte het toch niet omdat die niet de mogelijkheid ondersteunen dat het niet <entry> is maar <a:entry>.
Ik heb geprobeerd bestaande Atom Readers aan te passen, maar ook daarmee zonder success.
Nu ben ik dan bezig met de volgende:
class.atomreader.php
http://www.plaatscode.be/141329 /
feeds.php
http://www.plaatscode.be/141330 /
Hierbij is het de bedoeling om $data te strippen van zijn "a:" waardes
en daarnaast display_entry / feeds aanpassen om lege TITLES te negeren.
Ik hoop dat jullie mij hierbij kunnen helpen want ik ben echt vastgelopen hiermee...
Mvg,
lars
18 antwoorden
Gesponsorde links
icemar - 15/10/2011 08:13
Lid
Waarom gebruik je niet de php functie simplexml_load_file hier mee kan je de rss zo laten zien hoe je zelf wil.
Tevens heb je dan ook de optie om lege titels te negeren.
Bedankt door: larssy1
larssy1 - 16/10/2011 23:42 (laatste wijziging 16/10/2011 23:43)
MySQL beginner
Hmm, ja is veel makkelijker, er word tenminste nu iets weergegeven,, haha..
Het lukt me alleen echter nog niet om de userRating weer te geven. En ik weet niet waarom.. alles begint met een a: en userRating net weer niet..
<?php
$myFile = "http://catalog.zune.net/v3.2/en-Us/apps/21729556-a492-e011-986b-78e7d1fa76f8/reviews";
$feed = simplexml_load_file($myFile);
$xml = $feed->children('http://www.w3.org/2005/Atom');
echo "<h1>".$xml->title . "</h1>\n";
foreach ($xml->entry as $entries) {
$child = $entries->children('http://www.w3.org/2005/Atom');
if (!empty($child->updated)) echo "<p>" . $child->updated . "</p>\n";
if (!empty($child->author->name)) echo "<p>" . $child->author->name . "</p>\n";
echo "<p><h1>" . $child->userRating. "</h1></p>\n";
if (!empty($child->summary)) echo htmlspecialchars($child->summary) . "<br />\n";
echo $child->content->asXML();
}
?>
<?php
$myFile = "http://catalog.zune.net/v3.2/en-Us/apps/21729556-a492-e011-986b-78e7d1fa76f8/reviews" ;
$feed = simplexml_load_file( $myFile ) ;
$xml = $feed -> children ( 'http://www.w3.org/2005/Atom' ) ;
echo "<h1>" . $xml -> title . "</h1>\n " ;
foreach ( $xml -> entry as $entries ) {
$child = $entries -> children ( 'http://www.w3.org/2005/Atom' ) ;
if ( ! empty ( $child -> updated ) ) echo "<p>" . $child -> updated . "</p>\n " ; if ( ! empty ( $child -> author -> name ) ) echo "<p>" . $child -> author -> name . "</p>\n " ; echo "<p><h1>" . $child -> userRating . "</h1></p>\n " ; echo $child -> content -> asXML ( ) ; }
?>
icemar - 17/10/2011 07:56 (laatste wijziging 17/10/2011 07:56)
Lid
Zo te zien wordt deze niet met de
mee gestuurd dan moet je uitvinden waar deze wel in zit
larssy1 - 17/10/2011 09:30
MySQL beginner
icemar schreef:
Zo te zien wordt deze niet met de [..code..]
mee gestuurd dan moet je uitvinden waar deze wel in zit
zover was ik ook al
larssy1 - 17/10/2011 09:56 (laatste wijziging 17/10/2011 09:58)
MySQL beginner
Maarten schreef:
Anders eens een var_dump van $entries doen en hopen dat je die ergens terug vindt?Â
had ik al geprobeerd.. maar daarmee mee kom je tot dezelfde conclusie.. het zit er niet in, terwijl het wel in de code van de feed staat.
object(SimpleXMLElement)#5 (5) { ["updated"]=> string(24) "2011-10-15T07:05:00.343Z" ["title"]=> object(SimpleXMLElement)#6 (0) { } ["id"]=> string(82) "tag:catalog.zune.net,2011-10-17:/apps/21729556-a492-e011-986b-78e7d1fa76f8/reviews" ["content"]=> object(SimpleXMLElement)#7 (0) { } ["author"]=> object(SimpleXMLElement)#8 (1) { ["name"]=> string(12) "username" } }
bij het gebruik van var_dump op de xml zelf, komt er ook geen userrating naar boven btw.
icemar - 17/10/2011 10:05
Lid
Dus kan je deze ook niet gebruiken lijkt mij dan
larssy1 - 17/10/2011 10:05
MySQL beginner
Raar dat microsoft hem dan toch meegeeft in de source van de feeds.
icemar - 17/10/2011 10:23
Lid
Als je zo de feed aanroept staat er ook geen userRating bij heb je een voorbeeld van de feed waar je deze wel in ziet ?
larssy1 - 17/10/2011 10:45 (laatste wijziging 17/10/2011 11:30)
MySQL beginner
http://catalog....f8/reviews
De source code van zune is een enorme warboel, het gemakkelijks is gewoon zoeken op userRating
----
Bij deze is het t zelfde verhaal, je kunt alleen bij de objecten komen die met een a: beginnen.
http://catalog....e7d1fa76f8
icemar - 17/10/2011 13:01
Lid
De userrating staat wel in de bron maar wordt ook niet getoond bij de feed op de site.
Dus ze zullen dat niet hebben toegevoegd aan hun feed om te tonen.
Hier kan je niets aan doen.
larssy1 - 17/10/2011 13:21
MySQL beginner
Hmm, dan ben ik toch echt benieuwd welke feeds websites als wp7applist.com etc gebruiken.
of programma's zoals Ztop
icemar - 17/10/2011 14:20
Lid
Ze maken hun eigen feed doormiddel van data uit een database te halen.
De feed die ze ter beschikking stellen is beperkt zo te zien.
larssy1 - 17/10/2011 14:23 (laatste wijziging 17/10/2011 14:32)
MySQL beginner
Awh ok, dan zou ik in dit geval even contact moeten opnemen met de App Hub Support, toch bedankt voor jullie hulp.
----
Ik zal dit topic voor vandaag nog open laten, misschien dat iemand met een nog werkend idee komt.
Morgen zal ik 'm op opgelost zetten.
Maarten - 17/10/2011 15:05 (laatste wijziging 17/10/2011 15:06)
Erelid
Mjah, hij staat er toch in, dus moet je hem toch kunnen uitlezen? Ik ben een .NET mens, maar ik kan mij moeilijk voorstellen dat het niet lukt in PHP.
Nu doe je iets à la $bla->Children("namespace"). Als je nu als 2de variabele GEEN namespace aanroept, dan moet je toch die userrating meekrijgen?
edit:
<?php
$myFile = "http://catalog.zune.net/v3.2/en-Us/apps/21729556-a492-e011-986b-78e7d1fa76f8/reviews";
$feed = simplexml_load_file($myFile);
$xml = $feed->children('http://www.w3.org/2005/Atom');
echo "<h1>".$xml->title . "</h1>\n";
foreach ($xml->entry as $entries) {
$child = $entries->children('http://www.w3.org/2005/Atom');
$child2 = $entries->children();
// Volgens mij zal child2 de userrating bevatten?
if (!empty($child->updated)) echo "<p>" . $child->updated . "</p>\n";
if (!empty($child->author->name)) echo "<p>" . $child->author->name . "</p>\n";
echo "<p><h1>" . $child->userRating. "</h1></p>\n";
if (!empty($child->summary)) echo htmlspecialchars($child->summary) . "<br />\n";
echo $child->content->asXML();
}
?>
<?php
$myFile = "http://catalog.zune.net/v3.2/en-Us/apps/21729556-a492-e011-986b-78e7d1fa76f8/reviews" ;
$feed = simplexml_load_file( $myFile ) ;
$xml = $feed -> children ( 'http://www.w3.org/2005/Atom' ) ;
echo "<h1>" . $xml -> title . "</h1>\n " ;
foreach ( $xml -> entry as $entries ) {
$child = $entries -> children ( 'http://www.w3.org/2005/Atom' ) ;
$child2 = $entries -> children ( ) ;
// Volgens mij zal child2 de userrating bevatten?
if ( ! empty ( $child -> updated ) ) echo "<p>" . $child -> updated . "</p>\n " ; if ( ! empty ( $child -> author -> name ) ) echo "<p>" . $child -> author -> name . "</p>\n " ; echo "<p><h1>" . $child -> userRating . "</h1></p>\n " ; echo $child -> content -> asXML ( ) ; }
?>
Bedankt door: larssy1
Maarten - 17/10/2011 15:49
Erelid
Eigenlijk is het nog redelijk logisch.. je namespace beperkt zich effectief tot die namespace, de userrating zit in een andere namespace. Eigenlijk zou je op een of andere manier moeten een 'merge' doen van die namespaces, maar zoals ik zei, PHP ben ik al een hele tijd verleerd.
larssy1 - 17/10/2011 15:53
MySQL beginner
Ah ok, nja bedankt voor het helpen met het oplossen van mijn probleem.
bij deze staat hij op 'opgelost'.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.