XML valideren
Ik ben bezig met het maken van een XML, deze is gegenereerd met SimpleXML
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//Start het opbouwen van de XML
$oXml = new SimpleXMLElement('<vacatures></vacatures>');
// Doorloop de gegevens die opgehaald zijn uit de database
while($aRow = mysql_fetch_assoc($db_query_result))
{
// Maak een nieuw gedeelte binnen de XML
$oMake = $oXml->addChild('vacature');
// Voeg de titel van de vacature toe
$oMake->addChild('title',$aRow['Naamvacature']);
// Voeg een PubDate van de vacature toe
$oMake->addChild('pubDate',date('Y-m-d H:i:s'));
// Voeg de link naar de vacature toe
$oMake->addChild('link','http://www.vacature-werkt.nl/Vacaturegegevens.php?id=' . $aRow['id']);
// Voeg de beschrijving van de vacature toe
//$oMake->addChild('description',$aRow['Vacaturebeschrijving']);
$oMake->addChild('description','Test');
}
// Sluit de XML af
// Hier kun je eventueel nog de bestandsnaam aanpassen
$oXml->asXML('test_file.xml');
?>
//Start het opbouwen van de XML
$oXml = new SimpleXMLElement('<vacatures></vacatures>');
// Doorloop de gegevens die opgehaald zijn uit de database
while($aRow = mysql_fetch_assoc($db_query_result))
{
// Maak een nieuw gedeelte binnen de XML
$oMake = $oXml->addChild('vacature');
// Voeg de titel van de vacature toe
$oMake->addChild('title',$aRow['Naamvacature']);
// Voeg een PubDate van de vacature toe
$oMake->addChild('pubDate',date('Y-m-d H:i:s'));
// Voeg de link naar de vacature toe
$oMake->addChild('link','http://www.vacature-werkt.nl/Vacaturegegevens.php?id=' . $aRow['id']);
// Voeg de beschrijving van de vacature toe
//$oMake->addChild('description',$aRow['Vacaturebeschrijving']);
$oMake->addChild('description','Test');
}
// Sluit de XML af
// Hier kun je eventueel nog de bestandsnaam aanpassen
$oXml->asXML('test_file.xml');
?>
Als ik de XML nu probeer te valideren via de volgende link:
Klik hier
Dan krijg ik verschillende errors, maar ik weer niet zo goed hoe ik die moet oplossen.
Zijn er ideeën op tips vanuit jullie?
Mvg,
Kitty
Gewijzigd op 08/10/2011 16:45:55 door Kitty N
->
$oXml = new SimpleXMLElement('<root></root>');
En probeer deze:
header("Content-type: application/rss+xml");
En als ik header("Content-type: application/rss+xml"); toevoeg dan wordt er gevraagd om de php pagina op te slaan zodra ik die aanroep.
Dit is het hele script (heb de database gegevens even weg gehaald):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
header("Content-type: application/rss+xml");
// Maak een connectie met de server
$db_connectie = mysql_connect($db_server,$db_username,$db_password);
if(!$db_connectie)
{
echo 'Er kan geen verbinding gemaakt worden met de server.<br />Fout: ' . mysql_error();
}
else
{
//Database selecteren
$db_select = mysql_select_db($db_database, $db_connectie);
if(!$db_select)
{
echo 'Er kan geen verbinding gemaakt worden met de database.<br />Fout: ' . mysql_error();
}
else
{
// Query genereren
$db_query = 'SELECT id,
Naamvacature,
Vacaturebeschrijving
FROM Vacatures
WHERE Status = "Active"
ORDER BY Inschrijfdatum DESC
LIMIT 10';
// Query uitvoeren
$db_query_result = mysql_query($db_query);
if(!$db_query_result)
{
echo 'Er is iets fout gegaan tijdens het uitvoeren van de query.<br />Fout: ' . mysql_error();
}
else
{
//Start het opbouwen van de XML
$oXml = new SimpleXMLElement('<root></root>');
// Doorloop de gegevens die opgehaald zijn uit de database
while($aRow = mysql_fetch_assoc($db_query_result))
{
// Maak een nieuw gedeelte binnen de XML
$oMake = $oXml->addChild('vacature');
// Voeg de titel van de vacature toe
$oMake->addChild('title',$aRow['Naamvacature']);
// Voeg een PubDate van de vacature toe
$oMake->addChild('pubDate',date('Y-m-d H:i:s'));
// Voeg de link naar de vacature toe
$oMake->addChild('link','http://www.vacature-werkt.nl/Vacaturegegevens.php?id=' . $aRow['id']);
// Voeg de beschrijving van de vacature toe
//$oMake->addChild('description',$aRow['Vacaturebeschrijving']);
$oMake->addChild('description','Test');
}
// Sluit de XML af
// Hier kun je eventueel nog de bestandsnaam aanpassen
$oXml->asXML('test_file.xml');
}
}
}
?>
header("Content-type: application/rss+xml");
// Maak een connectie met de server
$db_connectie = mysql_connect($db_server,$db_username,$db_password);
if(!$db_connectie)
{
echo 'Er kan geen verbinding gemaakt worden met de server.<br />Fout: ' . mysql_error();
}
else
{
//Database selecteren
$db_select = mysql_select_db($db_database, $db_connectie);
if(!$db_select)
{
echo 'Er kan geen verbinding gemaakt worden met de database.<br />Fout: ' . mysql_error();
}
else
{
// Query genereren
$db_query = 'SELECT id,
Naamvacature,
Vacaturebeschrijving
FROM Vacatures
WHERE Status = "Active"
ORDER BY Inschrijfdatum DESC
LIMIT 10';
// Query uitvoeren
$db_query_result = mysql_query($db_query);
if(!$db_query_result)
{
echo 'Er is iets fout gegaan tijdens het uitvoeren van de query.<br />Fout: ' . mysql_error();
}
else
{
//Start het opbouwen van de XML
$oXml = new SimpleXMLElement('<root></root>');
// Doorloop de gegevens die opgehaald zijn uit de database
while($aRow = mysql_fetch_assoc($db_query_result))
{
// Maak een nieuw gedeelte binnen de XML
$oMake = $oXml->addChild('vacature');
// Voeg de titel van de vacature toe
$oMake->addChild('title',$aRow['Naamvacature']);
// Voeg een PubDate van de vacature toe
$oMake->addChild('pubDate',date('Y-m-d H:i:s'));
// Voeg de link naar de vacature toe
$oMake->addChild('link','http://www.vacature-werkt.nl/Vacaturegegevens.php?id=' . $aRow['id']);
// Voeg de beschrijving van de vacature toe
//$oMake->addChild('description',$aRow['Vacaturebeschrijving']);
$oMake->addChild('description','Test');
}
// Sluit de XML af
// Hier kun je eventueel nog de bestandsnaam aanpassen
$oXml->asXML('test_file.xml');
}
}
}
?>
Of zet ik de header nu op een verkeerde plek?
Gewijzigd op 08/10/2011 18:31:03 door kitty N
http://www.rssboard.org/rss-specification
een header heb je niet nodig als je een xml opslaat, en je XML is valid
wil je rss feeds gaan doen kijk dan hier een header heb je niet nodig als je een xml opslaat, en je XML is valid
Ik wil dit gebruiken voor RSS richting twitter via de site www.twitterfeed.com
Als ik daar inlog en de xml wil testen komt de volgende foutmelding:
Your feed might be empty or missing publish dates or GUIDs. A feed needs to contain publish dates or GUIDs in order to work with twitterfeed, see help
Indien ik dan doorklik op help krijg ik de volgende tekst:
Q. twitterfeed says "We couldn't find valid date/time stamps or GUIDs on items"
There are two methods twitterfeed can use to determine if an item in a feed is new, and should be posted to twitter - by default this is done through the date/time that a blog post has been published, or (if you select the "Post new items based on ... GUID" option in the twitterfeed "advanced settings"), by a unique ID on each blog post. Which one you want to use depends a little on the type of RSS feed you have, but twitterfeed requires at least one of the two to be present in the feed - if neither are present, there is no way to tell if an item in a feed is new, and should be posted.
If twitterfeed gives the message saying it can't find valid date/time stamps in your feed, try these steps:
Take a look at your feed - is there a date/time showing on every item in the feed? If not, you may be using an older version of RSS (0.92) which doesn't include publish dates. Your blog will probably provide the same feed in RSS 2.0 or Atom 1.0 format (both of which contain publish dates), so try and find the feed URL for the RSS 2.0 or Atom feed (see "How do I find my feed URL" above if you have difficulty finding the feed URLs)
The dates need to be in a specific, valid format in order to be read correctly. If your feed does contain date/time stamps but you still get the above message, try entering your feed URL at feedvalidator.org - this is a useful online tool which can show common problems with feeds, including invalid date formats.
If you have no pubDate elements in your feed at all, but the feed does have GUIDs (look for <id> or <guid> elements in the source of the feed), then you should be able to select the "Post new items based on ... GUID" option in the twitterfeed "advanced settings", and twitterfeed will then use these IDs to determine what is new.
Toch heb ik er een pubDate in gezet.
Ik heb de XML een beetje aangepast.
Heeft iemand nog een oplossing?
Ger van Steenderen op 08/10/2011 20:19:36:
wil je rss feeds gaan doen kijk dan hier http://www.rssboard.org/rss-specification
een header heb je niet nodig als je een xml opslaat, en je XML is valid
een header heb je niet nodig als je een xml opslaat, en je XML is valid
Kijk toch maar eens op die site, je kunt daar ook voorbeelden van valide rss-feeds vinden.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
//Start het opbouwen van de XML
$oXml = new SimpleXMLElement('<rss version="2.0"></rss>');
$oChannel = $oXml->addChild('channel');
$oChannel->addChild('title','Vacatures');
$oChannel->addChild('description','De 10 laatste actieve vacatures');
// Doorloop de gegevens die opgehaald zijn uit de database
while($aRow = mysql_fetch_assoc($db_query_result))
{
// Maak een nieuw gedeelte binnen de XML
$oMake = $oChannel->addChild('item');
// Voeg de titel van de vacature toe
$oMake->addChild('title',$aRow['Naamvacature']);
// Voeg een PubDate van de vacature toe (Sun, 19 May 2002 15:21:36 GMT)
// Juiste datum en tijd
$aDatum = explode('-', $aRow['Inschrijfdatum']);
$aTijd = explode(':', $aRow['Inschrijftijd']);
$nDatum = mktime($aTijd[0]-2, $aTijd[1], $aTijd[2], $aDatum[1], $aDatum[2], $aDatum[0]);
$dDatum = date('D, d M Y H:i', $nDatum);
$oMake->addChild('pubDate',$dDatum . ' GMT');
// Voeg de link naar de vacature toe
$oMake->addChild('link','http://www.vacature-werkt.nl/Vacaturegegevens.php?id=' . $aRow['id']);
// Voeg de beschrijving van de vacature toe
$oMake->addChild('description',$aRow['Vacaturebeschrijving']);
}
// Sluit de XML af
// Hier kun je eventueel nog de bestandsnaam aanpassen
$oXml->asXML('test_file.xml');
?>
//Start het opbouwen van de XML
$oXml = new SimpleXMLElement('<rss version="2.0"></rss>');
$oChannel = $oXml->addChild('channel');
$oChannel->addChild('title','Vacatures');
$oChannel->addChild('description','De 10 laatste actieve vacatures');
// Doorloop de gegevens die opgehaald zijn uit de database
while($aRow = mysql_fetch_assoc($db_query_result))
{
// Maak een nieuw gedeelte binnen de XML
$oMake = $oChannel->addChild('item');
// Voeg de titel van de vacature toe
$oMake->addChild('title',$aRow['Naamvacature']);
// Voeg een PubDate van de vacature toe (Sun, 19 May 2002 15:21:36 GMT)
// Juiste datum en tijd
$aDatum = explode('-', $aRow['Inschrijfdatum']);
$aTijd = explode(':', $aRow['Inschrijftijd']);
$nDatum = mktime($aTijd[0]-2, $aTijd[1], $aTijd[2], $aDatum[1], $aDatum[2], $aDatum[0]);
$dDatum = date('D, d M Y H:i', $nDatum);
$oMake->addChild('pubDate',$dDatum . ' GMT');
// Voeg de link naar de vacature toe
$oMake->addChild('link','http://www.vacature-werkt.nl/Vacaturegegevens.php?id=' . $aRow['id']);
// Voeg de beschrijving van de vacature toe
$oMake->addChild('description',$aRow['Vacaturebeschrijving']);
}
// Sluit de XML af
// Hier kun je eventueel nog de bestandsnaam aanpassen
$oXml->asXML('test_file.xml');
?>
Bedankt voor de reacties
Gewijzigd op 15/10/2011 15:15:10 door kitty N