Avatar billede cbdavl Nybegynder
03. august 2007 - 16:05 Der er 4 kommentarer

Søg i en xml fil

Hej,
jeg er meget til php når det gælder om at få det til at læse fra en XML fil. Jeg har prøvet at lave en side der henter en bestemt persons data fra XML filen, og kun den persons data, men allerede her kan jeg se at den måde jeg lærte at hente fra en XML fil ikke er særlig god, for den tjekker godt nok, men den tjekker kun den første person i XML filen, ikke alle de andre, hvilket ikke er så godt hvis personen ikke er den første i filen.

Mit php ser sådan her ud:
    $dom = new DOMDocument();
    $dom->load('lean.xml');
   
    if(!isset($_GET['str'])) {
        $str = '';
    } else {
        $str = $_GET["str"];
    }
   
    $persons = $dom->getElementsByTagName('persons');
    foreach($persons as $person) {
        if(strtolower($person->getElementsByTagName('name')->item(0)->nodeValue) == strtolower($str)) {
            echo $person->getElementsByTagName('name')->item(0)->nodeValue.', '.$person->getElementsByTagName('age')->item(0)->nodeValue;
        }
    }

og XML filen således:
<?xml version="1.0"?>
<persons>
  <person>
    <name>Elisabeth</name>
    <age>15</age>
  </person>
  <person>
    <name>Sarah</name>
    <age>14</age>
  </person>
</persons>
Avatar billede cbdavl Nybegynder
03. august 2007 - 16:06 #1
**RETTELSE**
Jeg er meget ny til php, når....
Avatar billede cbdavl Nybegynder
03. august 2007 - 16:43 #2
Jeg fik heklet det, og det virker, men det kan umuligt være den mest praktiske måde at gøre det på, eller hvad?:::

if(!isset($_GET["str"])) {
    $str = '';
} else {
    $str = $_GET["str"];
}

$name = array();
$age = array();

$dom = new DOMDocument();
$dom->load("lean.xml");
   
$root = $dom->getElementsByTagName('person');
foreach($root as $person) {
    $name[] = $person->getElementsByTagName('name')->item(0)->nodeValue;
    $age[] = $person->getElementsByTagName('age')->item(0)->nodeValue;
}
   
for($i=0;$i<count($name);$i++) {
    if(strtolower($name[$i]) == strtolower($str)) {
        echo $name[$i].', '.$age[$i];
    }
}
Avatar billede mcardle Nybegynder
03. august 2007 - 19:20 #3
Det ser meget fornuftigt ud.

//mcardle
Avatar billede arne_v Ekspert
03. august 2007 - 19:56 #4
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester