Ankündigung

Einklappen
Keine Ankündigung bisher.

Entfernt der XML Parser automatisch Umbrüche?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Entfernt der XML Parser automatisch Umbrüche?

    Moin,

    habe eine XML Produktdatei aus unserem WWS. Dazu habe ich mir noch eine kleine XML Classe geschrieben zur Verarbeitung. Mir ist jetzt bei der Ausgabe aufgefallen, daß die Umbrüche aus dem Produktbeschreibungselement entfernt werden.

    Hier auszug XML
    Code:
    ...
          ZU1 = ""
          ZU2 = ""
          ZUSTEXT1 = "echtes, italienisches Leder
    weicher Griff
    großer Innenraum
    große, obere Öffnung mit Klappbügeln und Schwenkverschlüssen
    mit extra Schloss verschließbar (nicht im Lieferumfang) 
    Dokumententasche mit Reißverschluss 
    Rückseite mit Dokumententasche
    Lieferung mit Trageriemen
    
    Farben: braun 
    Maße: B 52 x H 36 x T 25 cm
    Leergewicht: 1,8 kg"
          ZUSTEXT2 = ""
    Hier mein kurzes Testskript:

    Code:
    <?php
    	function startElement($parser, $element_name, $element_attribute)
    	{
    		echo implode("
    ", $element_attribute) . "
    
    ";
    	}
    
    	function endElement($parser, $element_name)
    	{
    
    	}
    
    	function cdata($parser, $element_inhalt)
    	{
    
    	}
    
    	$xmlFile = file("./xmlfiles/artikel.XML");
    	$parser = xml_parser_create("iso-8859-1");
    
    	xml_set_element_handler($parser, "startElement", "endElement");
    	xml_set_character_data_handler($parser, "cdata");
    
    	foreach($xmlFile as $index => $elem)
    	{
    		xml_parse($parser, $elem);
    	}
    
    	xml_parser_free($parser);
    ?>
    Würd gern das element zustext1 auslesen inkl den Zeilenumbrüchen. Geht dies überhaupt?
    http://www.donvelopment.org

  • #2
    Ja, gibt es.
    Findest Du bei http://de.php.net/manual/en/function...set-option.php beschrieben.

    Kommentar


    • #3
      Danke erstmal für die Info.

      Würd gern noch wissen welche Option ich mit welchem Wert setzen muß damit das funzt. Mein erster Anlauf war XML_OPTION_SKIP_WHITE. Hat aber nicht geklappt. Die anderen Optionen sind eigentlich meines erachtens nach nicht geeignet und haben andere Aufgaben.
      http://www.donvelopment.org

      Kommentar


      • #4
        PHP-Code:
        <pre>
        <?php
        $string 
        = <<<XML
        <a>
         <b name="bbb">
          <c name="ccc">
              abc
              def
              ghi
              jkl
              mno
              pqr
              stu
              vwx
              yz
          </c>
         [/b]
        </a>
        XML;

        function 
        startElement($parser$element_name$element_attribute)
        {
            echo 
        $element_name;
        }
        function 
        endElement($parser$element_name)
        {
            echo 
        $element_name;
        }
        function 
        cdata($parser$element_inhalt)
        {
            echo 
        $element_inhalt;
        }

        $parser xml_parser_create("iso-8859-1");

        xml_set_element_handler($parser"startElement""endElement");
        xml_set_character_data_handler($parser"cdata");

        xml_parser_set_option($parserXML_OPTION_SKIP_WHITEfalse);

        xml_parse($parser$string);
        xml_parser_free($parser);
        ?>

        </pre>
        Gibt wie erwartet aus:
        Code:
        <pre>
        A
         B
          C
          	abc
          	def
          	ghi
          	jkl
          	mno
          	pqr
          	stu
          	vwx
          	yz
          C
         B
        A
        </pre>

        Kommentar


        • #5
          Habs Problem lokalisiert. Dein Code ist ja der selbe wie meiner ...

          Nach herumprobieren blieb ja nur noch eins:

          Das ganze klappt bei attributen nicht. Wenn Du folgendes mal ausgibst

          Code:
          $string = '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
          
          <TEST>
          	<DATA name="bla" description="row1
          
          row2
          row3" />
          	<DATA>sdhdhdfhfhfh
          dghdghgd
          kdhgdghdgjghjdhdhjdg</DATA>
          </TEST>';
          wirst Du sehen das der Inhalt vom Element ($element_inhalt) so wiedergegeben wird wie im $string. Mit Umbruch. Das ganze klappt aber bei Element Attributen leider nicht.

          Schade.
          http://www.donvelopment.org

          Kommentar

          Lädt...
          X