Jag har följande i ett XML dokument:
<?xml version='1.0' standalone='yes' ?>
<news>
<item>
<title>titel 1 här</title>
<published>2009-02-12</published>
</item>
<item>
<title>titel 2 här</title>
<published>2009-02-24</published>
</item>
</news>
Hur gör jag för att spara <title> i en variabel och <published> i en annan?
Just nu har jag detta:
$file = "http://www.mindoman.com/latestnews.xml";
function startTag($parser, $data){ }
function endTag($parser, $data){ }
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "contents");
$fp = fopen($file, "r");
$data = fread($fp, 80000);
if(!(xml_parse($xml_parser, $data, feof($fp)))){
die("Error on line " . xml_get_current_line_number($xml_parser));
}
xml_parser_free($xml_parser);
fclose($fp);
$news = "<strong>$data</strong>";
..som bara visar datumen bredvid varandra, inget annat.
SPiNMedlem sedan mars 20007 896 inlägg SimpleXML är lättare att använda om du bara ska läsa:
<?php
$xml = simplexml_load_file("XMLFil.xml");
echo "<p>Första rubriken: " . $xml->item[0]->title . "</p>";
echo "<p>Publicerad: " . $xml->item[0]->published . "</p>";
Testade att köra koden direkt, men fick en blank sida. :r
Verkar inte som att jag kan öppna/parsa något externt xml-dokument alls. :(
Har detta:
<?php
error_reporting(E_ALL);
ini_set("display_errors",true);
if (file_exists("http://fof.se/pod/rss.xml")) {
$xml = simplexml_load_file("http://fof.se/pod/rss.xml");
print_r($xml);
} else {
exit('Failed to open the XML document.');
}
?>
Får bara "Failed to open the XML document." hela tiden.
(Ja, jag har tillgång till SimpleXML.)
TroxyMedlem sedan mars 20041 505 inlägg Om du hoppar över file_exists då?
TroxyMedlem sedan mars 20041 505 inlägg Otestad kod, men såhär borde man göra:
try {
$xml = new SimpleXMLElement('http://fof.se/pod/rss.xml', NULL, TRUE);
} catch (Exception $e) {
echo 'Ojsan, kan ej ladda xml: ', $e->getMessage();
}
if (NULL !== $xml) {
// gör något kul med xml-trädet
}
Troxy skrev:
Otestad kod, men såhär borde man göra:
try {
$xml = new SimpleXMLElement('http://fof.se/pod/rss.xml', NULL, TRUE);
} catch (Exception $e) {
echo 'Ojsan, kan ej ladda xml: ', $e->getMessage();
}
if (NULL !== $xml) {
// gör något kul med xml-trädet
}
Då fick jag:
Fatal error: Cannot clone object of class SimpleXMLElement due to 'zend.ze1_compatibility_mode' in bla, bla, bla...
Vad betyder det? :r
SPiNMedlem sedan mars 20007 896 inlägg <?php
$pageContent = file_get_contents("XMLFil.xml");
$xml = new SimpleXMLElement($pageContent);
echo "<p>" . $xml->item[0]->title . "</p>";
...
SPiN skrev:
<?php
$pageContent = file_get_contents("XMLFil.xml");
$xml = new SimpleXMLElement($pageContent);
echo "<p>" . $xml->item[0]->title . "</p>";
...
Det verkar fungera.
Vad är det för skillnad på "simplexml_load_file" och "file_get_contents"?
Vilket sätt är "snabbast"?
SPiNMedlem sedan mars 20007 896 inlägg Det är nog inte så stor hastighetsskillnad, men det är ju enklare att direkt läsa in information till XML-parsern. Det fungerade ju däremot inte.
Ok! Bra att veta.
Just nu har jag detta:
ini_set('zend.ze1_compatibility_mode', 'false');
function news() {
$s = simplexml_load_file("http://www.mindoman.com/latestnews.xml");
print("<table cellpadding=\"0\" cellspacing=\"0\">");
foreach ($s->artikel as $artikel) {
print("<tr><td>$artikel->titel</td>");
print("<td class=\"action\">$artikel->datum</td></tr>");
}
print("</table>");
}
Men varje gång jag ska uppdatera sidan, så poppar det upp ett fönster ang. om jag vill spara ner php-filen. (Fungerar bara ibland.)
Hur löser jag det?