---
title: "xml"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/150505-xml"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Jet-li"
published: "2006-08-24T16:26:20.000Z"
updated: "2006-08-27T14:14:45.000Z"
replies: 20
views: 829
page: 1
pages: 2
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/php/150505-xml"
---

# xml

_Sida 1 av 2._

## #1 — Jet-li, 2006-08-24T16:26Z

Det är en xml fil på en annan domän än min som jag vill plocka ut viss information för att sedan visa på min domän.
Och den här.xml filen har den här uppbyggnaden:

 \<onliners\>
  \<member\>
  \<name\>DartVader\</name\> 
  \<category\>pro\</category\> 
  \</member\>
 \</onliners\>

Jag skulle vilja plocka ut namn slumpvis efter category och använda på min sida. Och jag vill kunna välja hur många som ska slumpas ut varje gång.
Men jag har noll koll på php och vet inte vart man kan läsa sig till detta. Har försökt googla men inte varit fyndig ännu.....

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

## #2 — Livijn, 2006-08-24T17:11Z

det här är inte php

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

## #3 — Jet-li, 2006-08-24T18:10Z

> **Livijn skrev:**
>
> det här är inte php

Vilken slutledningförmåga du besitter!  Och då du verkar veta ännu mindre än vad jag gör så undrar jag vad du bidrar med ditt inlägg?!?

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

## #4 — Livijn, 2006-08-24T18:41Z

att man ska flytta tråden, btw ja e bra på php :D \*Stolt\*

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

## #5 — Jet-li, 2006-08-24T18:45Z

> **Livijn skrev:**
>
> att man ska flytta tråden, btw ja e bra på php :D \*Stolt\*

Om du är så bra så kanske du kan svara på frågan då istället för meningslöst dravel!

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

## #6 — GunnarD, 2006-08-24T20:42Z

Man kan hantera XML filer i php, här är dokumentationen: <http://se.php.net/manual/en/ref.xml.php> 

Har aldrig behövt göra det så jag kan inte ge mera hjälp ;)

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

## #7 — emission, 2006-08-24T20:52Z

Du kan kanske använda funktionen xml_parse_into_struct, och sedan lösa slumpfrågan i php.

<http://se.php.net/manual/en/function.xml-parse-into-struct.php>

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

## #8 — Jet-li, 2006-08-25T04:18Z

Att få ut en lista på allt är inga problem. Det som jag inte hittar lösningen på är hur man endast får ut 3 st slumpvalda members.

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

## #9 — GunnarD, 2006-08-25T07:34Z

Kan du få in det i en array så borde det vara enkelt att slumpa ut 3 stycket värden ur arrayen.

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

## #10 — plup, 2006-08-25T11:51Z

Det är i allra högsta grad en **PHP**\-fråga!

Om du har en xml som ser ut typ:

```php
<?xml version="1.0" encoding="ISO-8859-1"?>
<onliners>
  <member>
      <name>Adam</name>
      <category>pro</category>
  </member>
  <member>
      <name>Bertil</name>
      <category>pro</category>
  </member>
  <member>
      <name>Caesar</name>
      <category>pro</category>
  </member>
  <member>
      <name>David</name>
      <category>n00b</category>
  </member>
  <member>
      <name>Erik</name>
      <category>n00b</category>
  </member>
  <member>
      <name>Fredrik</name>
      <category>pro</category>
  </member>
  <member>
      <name>Gosta</name>
      <category>pro</category>
  </member>
  <member>
      <name>Hjalmar</name>
      <category>pro</category>
  </member>
</onliners>
```

Så kan du använda dig av följande funktion

```php
<?php

function getName ($category = "pro", $num = 3) {

	// PHP5 - DOM - http://se2.php.net/manual/en/ref.dom.php
	$doc = DOMDocument::load('onliners.xml') or exit ("error");
	$xpath = new DOMXPath($doc);
	$params = $xpath->query("//member[category='" . $category . "']/name");

	// PHP4 - DOM XML - http://se2.php.net/manual/en/ref.domxml.php
//	$doc = domxml_open_mem('onliners.xml') or exit ("error");
//	$xpath = $doc->xpath_new_context (); 
//	$params = $xpath->xpath_eval("//member[category='" . $category . "']/name"); 

	foreach ($params as $param)
		$index[] = $param->nodeValue;

	$rand_keys = array_rand($index, $num);
	foreach ($rand_keys as $key)
		$arr[] = $index[$key];

	return $arr;

}

$data = getName (); // <- ANROPET!

print_r ($data); // <- GER / (eller slumpar fram i det här fallet då)...

?>
```

...utskriften:

```php
Array ( [0] => Bertil [1] => Hjalmar [2] => Caesar )
```

Sen kan du ju göra vad du vill med $data, vart du nu vill ha den.
Hoppas det går bra.

Jag fullkomligt ÄLSKAR **[DOM](http://www.php.net/dom)** i PHP, och XPATH!, det är så genialiskt! Fler människor borde använda det!

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

## #11 — Jet-li, 2006-08-25T15:50Z

"Fatal error: Call to undefined function: load() in /var/www/html/test/random.php on line 6" dyker upp när jag testar....
Verkar inte gilla sökvägen till .xml filen

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

## #12 — plup, 2006-08-25T20:25Z

njae, felmeddelandet klagar inte på sökvägen. däremot så kanske du kör med en lite äldre version av php? jag har testat ovanstående på "PHP Version 5.1.4" med framgång.

**onliners.xml** får du ju såklart byta ut mot den "riktiga" sökvägen.

/red
eller ja jo det är klart att sökvägen kan vara problemet, som sagt, "onliners.xml" måste ju vara "rätt"

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

## #13 — Jet-li, 2006-08-25T20:40Z

Har läst på lite om DOM och förstått att man inte kan använda det om inte xml filen ligger på sin egen server. Har jag förstått det rätt eller har jag fel?

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

## #14 — plup, 2006-08-26T03:06Z

jodå, det går att använda på externa filer, (det är fantastiskt!!!).

har gjort så i detta exempel, <http://www.webforum.nu/showthread.php?t=137704>

/red (om du berättar sökvägen/URLen till den "riktiga" onliners.xml så skulle jag kanske bättre förstå var felet ligger.)

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

## #15 — Jet-li, 2006-08-26T06:33Z

hmm kollade upp vilken version som jag hade av PHP och det var 4.4.2

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

## #16 — plup, 2006-08-26T08:31Z

åååååhhhh va synd, DOM är tyvärr php5 only.

/red
kanske att det funkar om du byter ut de två första raderna i funktionen till

```php
$doc = domxml_open_mem('onliners.xml');
$xpath = $doc->xpath_new_context ();
```

så blir det DOM XML ist som funkar i php4.

(jag har INTE provat att testa detta, men det borde funka på samma sätt tycker jag.)

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

## #17 — Jet-li, 2006-08-26T14:03Z

Visst är det synd men det kanske går att uppgradera till PHP 5 med lite tur.....

Fatal error: Call to undefined function: query() in /var/www/html/test/random.php on line 7
 blir det som error nu?!?

```php

 $params = $xpath->query("//member[category='" . $category . "']/name");
```

Så lite framsteg gjorde ändringen ändå :)

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

## #18 — plup, 2006-08-27T09:29Z

ah, sorry, den raden är ju lite DOM specifik den med...
byt ut $xpath-\>query(...) mot $xpath-\>xpath_eval(...)
så kanske... :)

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

## #19 — Jet-li, 2006-08-27T10:32Z

Den delen verkar ha gjort susen men nu blir det fel i rad 9....
"Warning: Invalid argument supplied for foreach() in /var/www/html/test/random.php on line 9"

```php
foreach ($params as $param)
```

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

## #20 — plup, 2006-08-27T11:24Z

hahaha, det tar aldrig slut  :e  :l 

alltså, php5 DOM query returnerar en **DOMNodeList** och därför passar den bra att "foreach'a", se [manualen för DOM xpath-query](http://se2.php.net/manual/en/function.dom-domxpath-query.php) för exempel.

php4 DOM XML hanterar tydligen det returnerade värdet av en (motsvarande query) xpath_eval lite annorlunda, kolla [manualen](http://se2.php.net/manual/en/function.xpath-eval.php) för exempel.

eller så kanske det är lättare att uppgradera till php5, (med tanke på att php6 redan kommit en bit i utvecklingsstadiet så vore det kanske värt att uppgradera om man vill hänga med i svängarna)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/150505-xml  
Nästa sida: https://www.webforum.nu/amne/php/150505-xml/page2.md
