php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-11-2007, 15:42
Coniaric
 Registrierter Benutzer
Links : Onlinestatus : Coniaric ist offline
Registriert seit: Apr 2004
Beiträge: 324
Coniaric ist zur Zeit noch ein unbeschriebenes Blatt
Standard XML-Parser, Zugriff auf das Attribut

Hallo,

bin etwas verzweifelt.
Ich will in der Foreach-Schleife ganz unten auch noch das Attribut ausgeben,
aber ich kriege das nicht hin. Ich hab schon alles Mögliche gefunden,
bin ja schon froh, allein so weit gekommen zu sein.

Im Grunde will ich also nur noch bei einer XML Zeile wie dieser:

<iw:land iso_land="DEU"/>

eben "DEU" ausgeben, bzw. in eine Variable speichern.

PHP-Code:
global $x;
$x=1;

$file "20071025114019.xml";
$feed = array();
$key "";
$info "";


function 
startElement($xml_parser$attrs)
    {
          global 
$feed;
    if (
count($attribs)) {
        foreach (
$attrs as $k => $v) {
            echo 
"<b>Namek: $k attribut: $v </b>";
        }
    }
       }

function 
endElement($xml_parser$name)
    {
        global 
$x;
        
$z $x++;
          global 
$feed$info;
           
$key $name.$z;
           
//echo $key;
          
$feed[$key] = $info;
          
$info "";
      }

function 
charData($xml_parser$data )
    {
          global 
$info;
          
$info .= $data;
       }

$xml_parser xml_parser_create();
xml_parser_set_option$xml_parserXML_OPTION_SKIP_WHITE);
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"charData" );
$fp fopen($file"r");
while (
$data fread($fp4096))
!
xml_parse($xml_parser$datafeof($fp));
xml_parser_free($xml_parser);

//global $arrayzaehler, $array;

$arrayzaehler=0;

    foreach(
$feed as $key => $wert)
    {
    echo 
"Das Element \"".$key."\" hat den Wert \"".$wert."\"...";
    
$array[$arrayzaehler]=trim($wert);
    
$arrayzaehler++;
    } 
So, daß im letzten Echo steht:

echo "Das Element \"".$key."\" hat den Wert \"".$wert."\" und das Attribut ".$attrib;


Ich war schon auf

http://www.tutorials.de/forum/php-tu...l-und-dom.html
http://www.professionelle-softwareen...simplexml.html

und hab mir das Manual bei php.net angeschaut.

Ich hab die Attribute sogar schon ausgelesen gekriegt, irgendwo
war ein sehr gutes Script, bei dem alles ausgelesen wurde.

Aber irgendwie krieg ich es nicht in die Schleife mit rein.
Das Script oben ist die letzte lauffähige Version, die ich natürlich
auch aus Manual und Beispielen zusammengestückelt habe...
Mit Zitat antworten
  #2 (permalink)  
Alt 06-11-2007, 15:48
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Wieso benutzt kein Mensch die DOM-Funktionen??
Aber ein Blick ins Manual hilft:
Zitat:
The function named by start_element_handler must accept three parameters: start_element_handler ( resource $parser, string $name, array $attribs )
(...)
The third parameter, attribs, contains an associative array with the element's attributes (if any).The keys of this array are the attribute names, the values are the attribute values.Attribute names are case-folded on the same criteria as element names.Attribute values are not case-folded.

The original order of the attributes can be retrieved by walking through attribs the normal way, using each().The first key in the array was the first attribute, and so on.

Anmerkung: Anstelle eines Funktionsnamens kann auch ein Array mit einer Objekt-Referenz und dem Namen einer Methode angegeben werden.
Mit Zitat antworten
  #3 (permalink)  
Alt 06-11-2007, 15:51
Coniaric
 Registrierter Benutzer
Links : Onlinestatus : Coniaric ist offline
Registriert seit: Apr 2004
Beiträge: 324
Coniaric ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich auch gefunden.
Aber aufm Server läuft leider nur PHP4 und bei der Version steht dick drüber:


Zitat:
Warnung

Diese Erweiterung ist EXPERIMENTELL. Das Verhalten dieser
Erweiterung, einschließlich der Funktionsnamen, und alles Andere was
hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne
Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese
Erweiterung auf eigenes Risiko.
Also hab ich es halt versucht so hinzukriegen...
Mit Zitat antworten
  #4 (permalink)  
Alt 06-11-2007, 20:59
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Mit der 4er Version ist natürlich nix mit DOM
Hat mein Hinweis auf den dritten Parameter denn was geholfen?
Mit Zitat antworten
  #5 (permalink)  
Alt 06-11-2007, 23:51
Coniaric
 Registrierter Benutzer
Links : Onlinestatus : Coniaric ist offline
Registriert seit: Apr 2004
Beiträge: 324
Coniaric ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja, das das wußte ich aber bereits.
Wie gesagt, habe mit einem anderen Script schon alles ausgelesen gekriegt.
Aus dem hab ich mir zum Teil auch das vorliegende zusammengebastelt.

Ich kriege das nur nicht in meine untere foreach eingebaut.
Wo in $attribs sind die gesuchten Daten?

Hab schon solche Sachen ausprobiert: $attribs[0][0] nur um mal zu sehen,
wo da überhaupt was drin steht. Mit print_r hab ich es ausgegeben,
aber das hat mich mehr verwirrt...

Ich weiß einfach nicht, wie ich an dieser Stelle die gewünschten Daten
raushole!

EDIT:

Und dann hab ich noch das Problem mit den HTML-Tags im XML...
<![CDATA[Hallo<br>test]]>
Macht keinen Umbruch sondern gibt Hallo<br>test aus!!
Da probier ich aber noch ein wenig mit rum, ist hier wahrscheinlich
eh der falsche Thread....


Geändert von Coniaric (06-11-2007 um 23:54 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 07-11-2007, 00:20
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zwei Fehler in deiner Funktion startElement:
- $attribs ist nirgends definiert, du meinst wahrscheinlich $attrs
- in der foreach-Schleife solltest du die Attribute in $feed speichern
Mit Zitat antworten
  #7 (permalink)  
Alt 07-11-2007, 08:59
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Deine Funktion:
PHP-Code:
startElement($xml_parser$attrs
Die geforderte Funktion, aus dem Manual:
PHP-Code:
start_element_handler $parser$name$attribs 
Entdeckst du Unterschiede?? (Außer, dass die Funktionen anders heißen!)
Mit Zitat antworten
  #8 (permalink)  
Alt 07-11-2007, 10:39
Coniaric
 Registrierter Benutzer
Links : Onlinestatus : Coniaric ist offline
Registriert seit: Apr 2004
Beiträge: 324
Coniaric ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Guten Morgen!

Okay, hier mal ein Zwischenstand.
Hab jetzt

PHP-Code:
start_element_handler $parser$name$attribs 
entsprechend geändert und überall die Variablen angeglichen.

Hab ich das Manual richtig verstanden, daß es bei
start_element_handler ($parser, $name)
nur zwei Argumente gibt in der Klammer?

Jedenfalls hab ich jetzt meine Ausgabe.
Jetzt muß ich "nur" noch irgendwie an die Attribute drankommen...

Bisher sieht es so aus:

PHP-Code:
global $x;
$x=1;

$file "20071025113254.xml";
$feed = array();
$key "";
$info "";


function 
start_element_handler $parser$name$attribs )
    {
//    print_r ($attrs);echo"<br>";
          
global $feed;
  
//  if (count($attribs)) {
 //       foreach ($attribs as $k => $v) {
 //           echo "<b>Namek: $k attribut: $v </b>";
  //      }
  //  }
       
}

function 
end_element_handler $parser$name )
    {
        global 
$x;
        
$z $x++;
          global 
$feed$info;
           
$key $name.$z;
           
//echo $key;
          
$feed[$key] = $info;
          
$info "";
      }

function 
charData($parser$data )
    {
          global 
$info;
          
$info .= $data;
       }

$parser xml_parser_create();
xml_parser_set_option$parserXML_OPTION_SKIP_WHITE);
xml_set_element_handler($parser"start_element_handler""end_element_handler");
xml_set_character_data_handler($parser"charData" );
$fp fopen($file"r");

while (
$data fread($fp4096))
!
xml_parse($parser$datafeof($fp));
xml_parser_free($parser);


$arrayzaehler=0;

    foreach(
$feed as $key => $wert)
    {
    echo 
"Das Element \"".$key."\" hat den Wert \"".$wert."\"...";
    } 
Ist $feed jetzt ein 3-Dimensionales array, wenn die Attribute drin sind?
Oder muß ich die Kommentare um die obere foreach wegmachen und
dort die Attribute irgendwie reinwurschteln?
Oder bin ich völlig auf dem Holzweg?

EDIT:

OffTopic:
Ist Euch eigentlich aufgefallen, daß der Erotik-Banner
da oben auf eine .asp-Seite verweist?



Geändert von Coniaric (07-11-2007 um 10:44 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 07-11-2007, 11:06
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Wie wär es mit Testausgaben. Wir sind doch nicht deine Ferndebugger!
Mit Zitat antworten
  #10 (permalink)  
Alt 07-11-2007, 11:26
Coniaric
 Registrierter Benutzer
Links : Onlinestatus : Coniaric ist offline
Registriert seit: Apr 2004
Beiträge: 324
Coniaric ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich ja gemacht, mit

print_r ($feed);

Aber da sind keine Attribute drin...

Gerade hänge ich sowieso noch an der foreach, leider können
auch mehrere Datensätze in einem XML stehen und
da die $key irgendwie automatisch durchnummeriert wird, weiß
ich noch nicht so genau, wie ich feststellen kann, wann
sich ein Datensatz wiederholt...

Hab langsam echt die Schnauze voll von dem Mist.

Was würde es ungefähr kosten, wenn das jemand fertig macht?
(Kommt das in Scriptgesuche?)

Es müßten praktisch die Daten aus dem XML in bestimmte Variablen
geschrieben werden und das ganze dann in eine fertige MySQL-Datenbank.
Auf dem Server läuft PHP4.4.4

EDIT:
ach ja und die Bilder, deren Pfad auch in der XML definiert ist, in 3 verschiedene Größenvarianten geändert und umbenannt werden.

Geändert von Coniaric (07-11-2007 um 11:31 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 08-11-2007, 00:38
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Bei mir kostet das 200 Euro, Zusage nach Zusendung einer exemplarischen XML-Datei und Absprache der Nebenbedingungen, Lieferung inkl. Rechnung max. 24h später.

OffTopic:
Ist Euch eigentlich aufgefallen, daß der Erotik-Banner
da oben auf eine .asp-Seite verweist?

Jetzt wo du es sagst, fällt mir auf wie gut mein Adblocker arbeitet.
Mit Zitat antworten
  #12 (permalink)  
Alt 08-11-2007, 10:09
Coniaric
 Registrierter Benutzer
Links : Onlinestatus : Coniaric ist offline
Registriert seit: Apr 2004
Beiträge: 324
Coniaric ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

ich bastle gerade selber noch dran rum. Es brennt aber und muß nächste Woche fertig sein. Falls ich es nicht hinkriege bis dahin - kannst Du mir eine EMailadresse geben oder sowas?
Rechnungen kannst Du stellen hast Du angedeutet?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:10 Uhr.