Hej,
jeg har et lille problem. Jeg vil gerne lave en xml-parser, så jeg læser lidt, og får stykket noget kode sammen:
<?
class Parser{
var $isItem;
var $tagName;
/*
var $fornavn;
var $efternavn;
var $alder;
*/
var $xml_parser;
function Parser(){
//lav vores parser
$this->$xml_parser = xml_parser_create();
//sæt den til at læse handlers i denne class
xml_set_object($this->$xml_parser, $this);
//sæt optiones
xml_parser_set_option ($this->$xml_parser, XML_OPTION_CASE_FOLDING, 1);
xml_parser_set_option ($this->$xml_parser, XML_OPTION_SKIP_WHITE, 1);
//navngiv handler functioner
xml_set_element_handler($this->$xml_parser, "_start", "_slut");
//xml_set_character_data_handler($this->$xml_parser, "_indhold");
}
function parse($data){
xml_parse($this->$xml_parser, $data);
//xml_parser_free($this->$xml_parser);
}
function _start($parser, $tag, $attri){
$this->$tagName = $tag;
if($tag == "ROLLER"){
print $this->$tagName."";
$this->$isItem = true;
print $this->$tagName."";
}
}
function _slut($parser, $tag){
if($tag == "ROLLER"){
//print $this->$fornavn." ".$this->$efternavn." er ".$this->$alder." år gammel";
$this->$isItem = false;
}
}
function _indhold($parser, $indData){
if($this->$isItem === true){
// de tre '=' sikre at det også er en boolsk værdi der ses som sand
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Nyt dokument</title>
<meta name="generator" content="TSW WebCoder">
</head>
<body>
<?
$file = "data.xml";
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
$data = fread($fp, filesize($file));
fclose($fp);
$parser = new Parser();
$parser->parse($data);
?>
</body>
</html>
koden læser en xml fil, og hvis det tag den læser hedder roller, så skriver den tag navnet, roller, ud, så sætter den $isItem til true og skirver igen tag navnet ud. Så du skulle printe noget ala:
ROLLER
ROLLER
men jeg får
ROLLER
1
Jeg tror at den sætter tag navnet til true i stedet for isItem. Men hvorfor gør den det, og hvordan kan jeg undgå det?
adam
Køb en zebra - og kald den plet
P.S. xml-filen, som jeg har tyv-stjålet fra en udv. artikel:
<?xml version="1.0" encoding="iso-8859-1"?>
<stamtrae>
<overskrift>Mit Stamtræ</overskrift>
<familemedlem id="001">
<fornavn>Susanne</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Mor til marc, </rolle>
<rolle>Claus kone, </rolle>
<rolle>Faster til Julie og Mathias, </rolle>
<rolle>Tante til Rasmus og Mads</rolle>
</roller>
<køn>Kvinde</køn>
<alder>38 år</alder>
<højde>167 cm</højde>
<vægt>Må jeg ikke oplyse (men den er lav ;o)</vægt>
</familemedlem>
<familemedlem id="002">
<fornavn>Claus</fornavn>
<efternavn>Pryds</efternavn>
<roller>
<rolle>Far til Marc, </rolle>
<rolle>Susannes mand, </rolle>
<rolle>Farbror til Rasmus og Mads, </rolle>
<rolle>Onkel til Julie og Mathias</rolle>
</roller>
<køn>Mand</køn>
<alder>37 år</alder>
<højde>175 cm</højde>
<vægt>74 kg.</vægt>
</familemedlem>
<familemedlem id="003">
<fornavn>Marc</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Vores søn, </rolle>
<rolle>Fætter til Rasmus, Mads, Julie og Mathias</rolle>
</roller>
<køn>Dreng</køn>
<alder>10 år</alder>
<højde>152 cm</højde>
<vægt>41 kg</vægt>
</familemedlem>
<familemedlem id="004">
<fornavn>Ellen</fornavn>
<efternavn>Pryds</efternavn>
<roller>
<rolle>Mor til Claus, </rolle>
<rolle>Svigermor til Susanne, </rolle>
<rolle>Farmor til marc, </rolle>
<rolle>Mormor til Rasmus og Mads</rolle>
</roller>
<køn>Kvinde</køn>
<alder>61 år</alder>
<højde>158 cm</højde>
<vægt>Ikke oplyst</vægt>
</familemedlem>
<familemedlem id="005">
<fornavn>Ib</fornavn>
<efternavn>Pryds</efternavn>
<roller>
<rolle>Far til Claus, </rolle>
<rolle>Svigerfar til Susanne, </rolle>
<rolle>Farfar til Marc, </rolle>
<rolle>Morfar til Rasmus og Mads</rolle>
</roller>
<køn>Mand</køn>
<alder>67 år</alder>
<højde>168 cm</højde>
<vægt>67 kg</vægt>
</familemedlem>
<familemedlem id="006">
<fornavn>Hanne</fornavn>
<efternavn>Pryds Skouby</efternavn>
<roller>
<rolle>Mor til Rasmus og Mads, </rolle>
<rolle>Søster til Claus, </rolle>
<rolle>Svigerinde til Susanne, </rolle>
<rolle>Faster til Marc</rolle>
</roller>
<køn>Kvinde</køn>
<alder>39 år</alder>
<højde>165 cm</højde>
<vægt>Ikke oplyst</vægt>
</familemedlem>
<familemedlem id="007">
<fornavn>Rasmus</fornavn>
<efternavn>Skouby</efternavn>
<roller>
<rolle>Søn til Hanne, </rolle>
<rolle>Bror til Mads, </rolle>
<rolle>Nevø til Claus, </rolle>
<rolle>Fætter til Marc</rolle>
</roller>
<køn>Dreng</køn>
<alder>14 år</alder>
<højde>172 cm</højde>
<vægt>56 kg</vægt>
</familemedlem>
<familemedlem id="008">
<fornavn>Mads</fornavn>
<efternavn>Skouby</efternavn>
<roller>
<rolle>Søn til Hanne, </rolle>
<rolle>Bror til Rasmus, </rolle>
<rolle>Nevø til Claus, </rolle>
<rolle>Fætter til Marc</rolle>
</roller>
<køn>Dreng</køn>
<alder>12 år</alder>
<højde>158 cm</højde>
<vægt>44 kg</vægt>
</familemedlem>
<familemedlem id="009">
<fornavn>Anne</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Mor til susanne, </rolle>
<rolle>Mormor til Marc, </rolle>
<rolle>Svigermor til Claus, </rolle>
<rolle>Farmor til Julie og Mathias</rolle>
</roller>
<køn>Kvinde</køn>
<alder>59 år</alder>
<højde>178 cm</højde>
<vægt>Ikke oplyst</vægt>
</familemedlem>
<familemedlem id="010">
<fornavn>Tonny</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Bror til Susanne, </rolle>
<rolle>Far til Julie og Mathias, </rolle>
<rolle>Lenes mand, </rolle>
<rolle>Svorger til Claus</rolle>
</roller>
<køn>Næsten en mand</køn>
<alder>36 år</alder>
<højde>198 cm</højde>
<vægt>TYK</vægt>
</familemedlem>
<familemedlem id="011">
<fornavn>Lene</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Tonnys kone, </rolle>
<rolle>Mor til Julie og Mathias, </rolle>
<rolle>Svigerinde til Susanne</rolle>
</roller>
<køn>Kvinde</køn>
<alder>34 år</alder>
<højde>178 cm</højde>
<vægt>Ikke oplyst</vægt>
</familemedlem>
<familemedlem id="012">
<fornavn>Julie</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Kusine til Marc, </rolle>
<rolle>Niece til Susanne, </rolle>
<rolle>Søster til Mathias</rolle>
</roller>
<køn>Pige</køn>
<alder>9 år</alder>
<højde>151 cm</højde>
<vægt>Ikke oplyst</vægt>
</familemedlem>
<familemedlem id="013">
<fornavn>Mathias</fornavn>
<efternavn>Hansen</efternavn>
<roller>
<rolle>Fætter til Marc, </rolle>
<rolle>Nevø til Susanne, </rolle>
<rolle>Bror til Julie</rolle>
</roller>
<køn>Dreng</køn>
<alder>4 år</alder>
<højde>98 cm</højde>
<vægt>21 kg</vægt>
</familemedlem>
<familemedlem id="014">
<fornavn>Luna</fornavn>
<efternavn>Vuffer</efternavn>
<roller>
<rolle>Gravhund</rolle>
</roller>
<køn>Kvinde</køn>
<alder>78 Hundeår</alder>
<højde>22 cm</højde>
<vægt>12 kg</vægt>
</familemedlem>
</stamtrae>
[Redigeret d. 15/01-05 13:45:14 af adam]