Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Problem beim anzeigen einer XML Datei

Mitglied: voipfreak

voipfreak (Level 1) - Jetzt verbinden

23.08.2011, aktualisiert 19:24 Uhr, 3678 Aufrufe, 7 Kommentare

Hallo zusammen habe ein großes Problem.

Ich habe eine XML Datei die wie folgt aufgebaut ist.:

01.
<?xml version="1.0" encoding="iso-8859-15"?> 
02.
<anzeigen> 
03.
<anzeige> 
04.
<titel>Testeintrag</titel> 
05.
<firma>Testfirma</firma> 
06.
<ort>verschiedene Vertriebsregionen</ort> 
07.
<plz></plz> 
08.
<aufgabenbereich>Mauerbauen</aufgabenbereich> 
09.
<qualifikation>Testquali</qualifikation> 
10.
<link>http://testlink.de</link> 
11.
<datum>17.08.11</datum> 
12.
</anzeige> 
13.
</anzeigen>
in dieser Datei befinden sich einige Einträge die ich in php ausgeben möchte. Nun habe ich schon lange im Netz gesucht und habe folgendes Script gefunden;

01.
<? 
02.
$anzeigen = simplexml_load_file('test.xml'); 
03.
  
04.
for($i=0,$size=count($titel);$i<$size;$i++) 
05.
  
06.
07.
    echo $anzeigen->anzeige[$i]->titel, '<br />';; 
08.
    echo $anzeigen->anzeige[$i]->firma, '<br />';; 
09.
	echo $anzeigen->anzeige[$i]->Ort, '<br />';; 
10.
	echo $anzeigen->anzeige[$i]->plz, '<br />';; 
11.
	echo $anzeigen->anzeige[$i]->link, '<br />';; 
12.
  
13.
14.
?>
Ich bekomme als Ausgabe nur eine leere Seite. Ich kann meinem Brain aber auch bei google etc. keinen stups geben woran das liegen könnte.
Könnte Ihr mir dabei helfen ?

Danke schonmal im voraus.

Gruß Voipfreak
Mitglied: bytecounter
23.08.2011 um 20:05 Uhr
Das ist ganz einfach.;Welchen Wert soll denn $title in Zeile 4 haben?

Korrekterweise:

01.
foreach ($anzeigen as $anzeige) { 
02.
    echo    $anzeige->$title 
03.
   ... 
04.
}
Bitte warten ..
Mitglied: voipfreak
23.08.2011 um 21:23 Uhr
Hi bytecounter danke schonmal dass du dir zeit genommen hast,

ich versuche mich mal anders auszudrücken:

Es Handelt sich um Stellenanzeigen und ich möchte die Werte so auslesen wie Sie in der XML stehen also Titel, Firma, Ort usw.
Nach der einen Anzeige kommt halt die nächste.

die wieder Titel, Firma, Ort etc enthält.

Gruß voipfreak
Bitte warten ..
Mitglied: dog
23.08.2011 um 22:41 Uhr
Betrachten wir doch mal zwei Grundregeln der Programmierung:

  1. Variablen sind dann verfügbar, wenn sie das erste mal zugewiesen wurden
  2. Programme arbeiten ausschließlich von oben nach unten.

Und jetzt denk noch mal über die Frage von bytecounter nach:
Welchen Wert soll denn $titel in Zeile 4 haben?
Bitte warten ..
Mitglied: Biber
23.08.2011 um 23:02 Uhr
@dog

Zitat von dog:
Betrachten wir doch mal zwei Grundregeln der Programmierung:

  1. Variablen sind dann verfügbar, wenn sie das erste mal zugewiesen wurden
  2. Programme arbeiten ausschließlich von oben nach unten.

Und jetzt denk noch mal über die Frage von bytecounter nach:
> Welchen Wert soll denn $titel in Zeile 4 haben?
Meinst du jezz' beim ersten Programmaufruf oder eher allgemein?

Grüße
Biber
Bitte warten ..
Mitglied: voipfreak
24.08.2011 um 01:19 Uhr
So habe es gelöst:
Nach fünf Tassen Kaffee und ner Packung Kippen habe ich
dieses Code gefunden und für meine zwecke modifiziert:

01.
<?php 
02.
$daten = file_get_contents("test.xml"); // XML Datei einlesen 
03.
$daten = explode("<anzeige>" , $daten); // Inhalt in ein Array zerlegen 
04.
 
05.
for ($zaehler = 1; $zaehler < count($daten); $zaehler++) { 
06.
ereg("<link>(.*)</link>" , $daten[$zaehler] , $link); // Link auslesen (wird in $link[1] gespeichert) 
07.
ereg("<titel>(.*)</titel>" , $daten[$zaehler] , $titel); // Name u. Beschreibung auslesen 
08.
ereg("<datum>(.*)</datum>" , $daten[$zaehler] , $datum); // Datum auslesen 
09.
ereg("<plz>(.*)</plz>" , $daten[$zaehler] , $plz); // Name u. Beschreibung auslesen 
10.
ereg("<firma>(.*)</firma>" , $daten[$zaehler] , $firma); 
11.
ereg("<ort>(.*)</ort>" , $daten[$zaehler] , $ort); 
12.
 
13.
 // Link Name und Beschreibung in HTML-Tags einbauen und ausgeben 
14.
 echo "<dl>\n"; 
15.
 echo " <dt> <a href=\"" . trim($link[1]) . "\" target=blank>$titel[1]</a></dt>\n"; 
16.
 echo " <dt> $datum[1] </dt>\n"; 
17.
.... usw 
18.
 echo "</dl>\n"; 
19.
20.
?>
Vielen Dank Bytecounter für deinen Beitrag.

Gruß Voipfreak
Bitte warten ..
Mitglied: EvilMoe
24.08.2011 um 07:52 Uhr
Hallo,

mache es dir nicht so umständig.
Ich habe eine Funktion die wandelt dir dein xml in einem Array um. Das sollte für deine zwecke genau das sein was du suchst statt mit "ereg" zu arbeiten.

01.
<?php 
02.
/**  
03.
 * xml2array() will convert the given XML text to an array in the XML structure.  
04.
 * Link: http://www.bin-co.com/php/scripts/xml2array/  
05.
 * Arguments : $contents - The XML text  
06.
 *                $get_attributes - 1 or 0. If this is 1 the function will get the attributes as well as the tag values - this results in a different array structure in the return value. 
07.
 *                $priority - Can be 'tag' or 'attribute'. This will change the way the resulting array sturcture. For 'tag', the tags are given more importance. 
08.
 * Return: The parsed XML in an array form. Use print_r() to see the resulting array structure.  
09.
 * Examples: $array =  xml2array(file_get_contents('feed.xml'));  
10.
 *              $array =  xml2array(file_get_contents('feed.xml', 1, 'attribute'));  
11.
 */  
12.
function xml2array($contents, $get_attributes=1, $priority = 'tag') { 
13.
    if(!$contents) return array(); 
14.
 
15.
    if(!function_exists('xml_parser_create')) { 
16.
        //print "'xml_parser_create()' function not found!"
17.
        return array(); 
18.
19.
 
20.
    //Get the XML parser of PHP - PHP must have this module for the parser to work 
21.
    $parser = xml_parser_create(''); 
22.
    xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); # http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss 
23.
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); 
24.
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); 
25.
    xml_parse_into_struct($parser, trim($contents), $xml_values); 
26.
    xml_parser_free($parser); 
27.
 
28.
    if(!$xml_values) return;//Hmm... 
29.
 
30.
    //Initializations 
31.
    $xml_array = array(); 
32.
    $parents = array(); 
33.
    $opened_tags = array(); 
34.
    $arr = array(); 
35.
 
36.
    $current = &$xml_array; //Refference 
37.
 
38.
    //Go through the tags. 
39.
    $repeated_tag_index = array();//Multiple tags with same name will be turned into an array 
40.
    foreach($xml_values as $data) { 
41.
        unset($attributes,$value);//Remove existing values, or there will be trouble 
42.
 
43.
        //This command will extract these variables into the foreach scope 
44.
        // tag(string), type(string), level(int), attributes(array). 
45.
        extract($data);//We could use the array by itself, but this cooler. 
46.
 
47.
        $result = array(); 
48.
        $attributes_data = array(); 
49.
         
50.
        if(isset($value)) { 
51.
            if($priority == 'tag') $result = $value
52.
            else $result['value'] = $value; //Put the value in a assoc array if we are in the 'Attribute' mode 
53.
54.
 
55.
        //Set the attributes too. 
56.
        if(isset($attributes) and $get_attributes) { 
57.
            foreach($attributes as $attr => $val) { 
58.
                if($priority == 'tag') $attributes_data[$attr] = $val
59.
                else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' 
60.
61.
62.
 
63.
        //See tag status and do the needed. 
64.
        if($type == "open") {//The starting of the tag '<tag>' 
65.
            $parent[$level-1] = &$current
66.
            if(!is_array($current) or (!in_array($tag, array_keys($current)))) { //Insert New tag 
67.
                $current[$tag] = $result
68.
                if($attributes_data) $current[$tag. '_attr'] = $attributes_data
69.
                $repeated_tag_index[$tag.'_'.$level] = 1; 
70.
 
71.
                $current = &$current[$tag]; 
72.
 
73.
            } else { //There was another element with the same tag name 
74.
 
75.
                if(isset($current[$tag][0])) {//If there is a 0th element it is already an array 
76.
                    $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result
77.
                    $repeated_tag_index[$tag.'_'.$level]++; 
78.
                } else {//This section will make the value an array if multiple tags with the same name appear together 
79.
                    $current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array 
80.
                    $repeated_tag_index[$tag.'_'.$level] = 2; 
81.
                     
82.
                    if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well 
83.
                        $current[$tag]['0_attr'] = $current[$tag.'_attr']; 
84.
                        unset($current[$tag.'_attr']); 
85.
86.
 
87.
88.
                $last_item_index = $repeated_tag_index[$tag.'_'.$level]-1; 
89.
                $current = &$current[$tag][$last_item_index]; 
90.
91.
 
92.
        } elseif($type == "complete") { //Tags that ends in 1 line '<tag />' 
93.
            //See if the key is already taken. 
94.
            if(!isset($current[$tag])) { //New Key 
95.
                $current[$tag] = $result
96.
                $repeated_tag_index[$tag.'_'.$level] = 1; 
97.
                if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data
98.
 
99.
 
100.
            } else { //If taken, put all things inside a list(array
101.
                if(isset($current[$tag][0]) and is_array($current[$tag])) {//If it is already an array... 
102.
 
103.
                    // ...push the new element into that array
104.
                    $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result
105.
                     
106.
                    if($priority == 'tag' and $get_attributes and $attributes_data) { 
107.
                        $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data
108.
109.
                    $repeated_tag_index[$tag.'_'.$level]++; 
110.
 
111.
                } else { //If it is not an array... 
112.
                    $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value 
113.
                    $repeated_tag_index[$tag.'_'.$level] = 1; 
114.
                    if($priority == 'tag' and $get_attributes) { 
115.
                        if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well 
116.
                             
117.
                            $current[$tag]['0_attr'] = $current[$tag.'_attr']; 
118.
                            unset($current[$tag.'_attr']); 
119.
120.
                         
121.
                        if($attributes_data) { 
122.
                            $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data
123.
124.
125.
                    $repeated_tag_index[$tag.'_'.$level]++; //0 and 1 index is already taken 
126.
127.
128.
 
129.
        } elseif($type == 'close') { //End of tag '</tag>' 
130.
            $current = &$parent[$level-1]; 
131.
132.
133.
     
134.
    return($xml_array); 
135.
}   
136.
 
137.
$file = file_get_contents('xml.xml'); 
138.
 
139.
var_dump( xml2array($file, 0) ); 
140.
 
141.
?>

Output:
01.
 
02.
 
03.
array(1) { 
04.
  ["anzeigen"]=> 
05.
  array(1) { 
06.
    ["anzeige"]=> 
07.
    array(8) { 
08.
      ["titel"]=> 
09.
      string(11) "Testeintrag" 
10.
      ["firma"]=> 
11.
      string(9) "Testfirma" 
12.
      ["ort"]=> 
13.
      string(30) "verschiedene Vertriebsregionen" 
14.
      ["plz"]=> 
15.
      array(0) { 
16.
17.
      ["aufgabenbereich"]=> 
18.
      string(10) "Mauerbauen" 
19.
      ["qualifikation"]=> 
20.
      string(9) "Testquali" 
21.
      ["link"]=> 
22.
      string(18) "http://testlink.de" 
23.
      ["datum"]=> 
24.
      string(8) "17.08.11" 
25.
26.
27.
}
Bitte warten ..
Mitglied: dog
24.08.2011 um 09:21 Uhr

WTF?!


Der erste Code vom TO war schon fast richtig und ihr fangt hier mit Konstrukten an, bei denen sich mir die Fußnägel aufrollen...
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Aus Dateien Strukturiert XMLs erstellen
gelöst Frage von MaxiamEntwicklung24 Kommentare

Schönen guten Morgen, ich bin neu also verzeiht Eventuelle ungenaue Fragestellungen ;) Ausgangssituation: ca. 1600 1Kb große Dateien die ...

XML
XML Datei mit Powershell splitten
gelöst Frage von LianenSchwingerXML2 Kommentare

Hallo, ich habe eine riesige Exportdatei im XML-Format die ich nicht weiterverarbeiten kann. Der Aufbau ist wie folgt: Ich ...

VB for Applications
XML Datei auslesen mit Excel
Frage von kaiuwe28VB for Applications10 Kommentare

Hallo zusammen, ich mal wieder Leider komme ich nicht weiter. Ich möchte aus einem Ordner mit mehreren XML Dateien ...

Batch & Shell
Script zum XML Datei Umschreiben
Frage von cberndtBatch & Shell12 Kommentare

Guten Tag. Ich habe folgendes Problem. Ich habe eine XML Datei mit meinen Gutscheincodes sowie weiter Daten aus meiner ...

Neue Wissensbeiträge
Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 2 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 5 StundenHumor (lol)3 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 22 StundenWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Windows 10

Windows 10 - Storage Sense - neues herstellerseitiges Cleaning-Tool statt cleanmgr

Tipp von mathu vor 1 TagWindows 102 Kommentare

Vermutlich ab dem Oktoberrelease wird eine neue Speicherbereinigungssuftware ausgeliefert von Microsoft. Cleanmgr.exe soll angeblich aber noch weiter parallel verfügbar ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V29 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...