---
title: "Läsa XML med php"
type: "forum-thread"
url: "https://www.webforum.nu/amne/xml/177114-läsa-xml-med-php"
topic: "XML"
topic_url: "https://www.webforum.nu/amne/xml"
author: "Guldstrand"
published: "2009-02-24T22:06:00.000Z"
updated: "2009-02-25T15:47:39.000Z"
replies: 10
views: 1033
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/xml/177114-läsa-xml-med-php"
---

# Läsa XML med php

## #1 — Guldstrand, 2009-02-24T22:06Z

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:

```php
$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.

Permalänk: https://www.webforum.nu/p/177114

## #2 — SPiN, 2009-02-24T22:11Z

[SimpleXML](http://www.php.net/simplexml) är lättare att använda om du bara ska läsa:

```php
<?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>";
```

Permalänk: https://www.webforum.nu/p/2173296

## #3 — Guldstrand, 2009-02-24T22:25Z

Testade att köra koden direkt, men fick en blank sida.  :r

Permalänk: https://www.webforum.nu/p/2173299

## #4 — Guldstrand, 2009-02-24T23:48Z

Verkar inte som att jag kan öppna/parsa något externt xml-dokument alls.  :(

Har detta:

```php
<?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.)

Permalänk: https://www.webforum.nu/p/2173303

## #5 — Troxy, 2009-02-25T03:30Z

Om du hoppar över file_exists då?

Permalänk: https://www.webforum.nu/p/2173308

## #6 — Troxy, 2009-02-25T03:36Z

Otestad kod, men såhär borde man göra:

```php
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
}
```

Permalänk: https://www.webforum.nu/p/2173310

## #7 — Guldstrand, 2009-02-25T04:48Z

> **[Troxy skrev:](https://www.webforum.nu/p/1457940)**
>
> Otestad kod, men såhär borde man göra:
>
>
> ```php
> 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

Permalänk: https://www.webforum.nu/p/2173314

## #8 — SPiN, 2009-02-25T07:38Z

```php
<?php
$pageContent = file_get_contents("XMLFil.xml");
$xml = new SimpleXMLElement($pageContent);

echo "<p>" . $xml->item[0]->title . "</p>";
...
```

Permalänk: https://www.webforum.nu/p/2173323

## #9 — Guldstrand, 2009-02-25T14:04Z

> **[SPiN skrev:](https://www.webforum.nu/p/1457953)**
>
> ```php
> <?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"?

Permalänk: https://www.webforum.nu/p/2173369

## #10 — SPiN, 2009-02-25T14:46Z

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.

Permalänk: https://www.webforum.nu/p/2173377

## #11 — Guldstrand, 2009-02-25T15:47Z

Ok! Bra att veta.

Just nu har jag detta:

```php
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?

Permalänk: https://www.webforum.nu/p/2173390

---

Tråden på webben: https://www.webforum.nu/amne/xml/177114-läsa-xml-med-php
