Avatar billede river_rage Nybegynder
23. april 2007 - 15:15 Der er 4 kommentarer og
1 løsning

PHP læse XML med attributes

Jeg skal have php til at indlæse nogle attributes fra xml-filen bolig.xml, som ser således ud:

<?xml version="1.0" encoding="utf-8" ?>
<galleri>
  <foto url="xml/bolig/1.jpg" overskrift="x" bodytekst="x">
  [...]
  <foto url="xml/bolig/9.jpg" overskrift="x" bodytekst="x">
</galleri>

Tidligere har jeg brugt følgende til at indlæse værdier mellem tags'ene f.eks. <tag>hej</tag>.

            $current_tag = "";

            function startElement($parser, $name, $attrs)
            {
              global $current_tag;
              if($name == "URL") $current_tag = $name;
              if($name == "PHOTO") $current_tag = $name;
              if($name == "OVERSKRIFT") $current_tag = $name;
            }
           
            function endElement($parser, $name)
            {
              global $current_tag;
              $current_tag = "";
            }
           
            function characterData($parser, $data)
            {  global $current_tag, $url, $photo, $overskrift;
              if($current_tag == "URL") $url = $data;
              if($current_tag == "PHOTO") $photo = $data;
              if($current_tag == "OVERSKRIFT") $overskrift = $data;
            }
           
           
            function parseXmlFile()
            {
                $file = "../xml/bolig.xml";
                $xml_parser = xml_parser_create();
                xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,true);
                                xml_parser_set_option($xml_parser,XML_OPTION_TARGET_ENCODING,'ISO-8859-1');
                xml_set_element_handler($xml_parser, "startElement", "endElement");
                xml_set_character_data_handler($xml_parser, "characterData");
                if (!($fp = fopen($file, "r")))
                                {
                  die("could not open XML input");
                }

                while ($data = fread($fp, 4096)) {
                  if (!xml_parse($xml_parser, $data, feof($fp)))
                                  {
                      die(sprintf("XML error: %s at line %d",
                                  xml_error_string(xml_get_error_code($xml_parser)),
                                  xml_get_current_line_number($xml_parser)));
                  }
                }
                xml_parser_free($xml_parser);
           
            }

Kan jeg genbruge dette stykke kode til at læse bolig.xml og hvis ja, hvordan?
Avatar billede jakobdo Ekspert
23. april 2007 - 15:52 #1
Har du adgang til PHP5, hvis ja, så kig på: http://dk2.php.net/simplexml
Avatar billede heyn Nybegynder
19. marts 2010 - 08:41 #2
Ja - Jeg anvender PHP 5.2
Avatar billede heyn Nybegynder
19. marts 2010 - 10:22 #3
Så lykkedes det meste. Men jeg kan ikke finde ud af hvordan jeg skal konvertere mine forandringer til et nyt xml-dokument og uploade det.
Lad os sige jeg skal uploade det til http://localhost/upload/.
Hvilken simplexml funktion skal jeg bruge?
Er det muligt kun at uploade forandringerne når det sker på localhost. Som nævnt er min xml-fil meget stor?
Avatar billede heyn Nybegynder
19. marts 2010 - 10:24 #4
Sorry - Jeg kom til at lægge mit indlæg forkert :)
Avatar billede river_rage Nybegynder
21. april 2010 - 12:02 #5
Lukker denne tråd, da den er 3 år gammel
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