XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   XML-Import mit PHP (http://xhtmlforum.de/showthread.php?t=73367)

Fanello 20.11.2017 14:35

XML-Import mit PHP
 
Liebe XHTMLForum-Community

Ich komme mit meinem XML-Import in PHP nicht ganz weiter...

PHP-Code:

$xml = <<<EOD
<iweb_events:eventsMessage xmlns:iweb_general=“http://www.i-web.ch/schema/IwebGeneral/1” xmlns:iweb_events=“http://www.i-web.ch/schema/IwebEvents/1" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”>
   <iweb_events:organizer>
     <iweb_general:name><![CDATA[Restaurant Egelmoos]]></iweb_general:name>
     <iweb_general:contact><![CDATA[T: +41 (0)71 414 34 34]]></iweb_general:contact>
     <iweb_general:email>apz-sekretariat@amriswil.ch</iweb_general:email>
   </iweb_events:organizer>
   <iweb_events:organizer>
     <iweb_general:name><![CDATA[Gemeinn&uuml;tziger Frauenverein]]></iweb_general:name>
     <iweb_general:contact><![CDATA[Frau Manuela Tschopp, Tel. 071 410 01 17]]></iweb_general:contact>
     <iweb_general:email>manuelatschopp@bluewin.ch</iweb_general:email>
     <iweb_general:website><![CDATA[http://www.tgf-frauenverein.ch]]></iweb_general:website>
   </iweb_events:organizer>
</iweb_events:eventsMessage>
EOD;

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace(‘e’‘http://www.i-web.ch/schema/IwebGeneral/1’);
$result $sxe->xpath(//e:name’);

foreach ($result as $name) {
 echo 
$name <br>;


In diesem Beispiel wird mir zwar der Name ausgegeben; jedoch ist mir nicht ganz klar, wie ich die anderen Objekte holen kann (contact, email, website) bzw. ist mir nicht ganz klar, wie ichdiese in die foreach-Schleife bekomme. Hat jemand vielleicht einen Tipp?

Fanello 21.11.2017 09:35

PHP-Code:

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('e''http://www.i-web.ch/schema/IwebEvents/1');
$result $sxe->xpath('//e:organizer');

foreach (
$result as $organizer) {
echo 
'Name: ' $organizer->name '<br>';
echo 
'Contact: ' $organizer->contact '<br>';
echo 
'Email: ' $organizer->email '<br>';


Nun zählt es zwar richtig durch, es bringt mir aber nicht die eigentliche Ausgabe:
Name:
Contact:
Email:
Name:
Contact:
Email:

EDIT:
Noch einen Schritt weiter...

PHP-Code:

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('e''http://www.i-web.ch/schema/IwebEvents/1');
$result $sxe->xpath('//e:organizer');
$result2 $sxe->xpath('//e:location');


foreach (
$result as $organizer) {
  
$o $organizer->children('iweb_general'true);
  echo 
'Name: ' $o->name '<br>';
  echo 
'Contact: ' $o->contact '<br>';
  echo 
PHP_EOL;
}
foreach (
$result2 as $location) {
  
$a $location->children('iweb_general'true);
  echo 
'Lokalität: ' $a->locality '<br>';
  echo 
PHP_EOL;    


Jetzt habe ich den gewünschten Inhalt in der Ausgabe, logischerweise habe ich aber zwei foreach, darum natürlich auch zwei Blöcke:

Name
Contact
Name
Contact

Lokalität
Lokalität

Ich müsste es aber so haben:
Name
Contact
Lokalität
Name
Contact
Lokalität

Kann ich die foreach irgendwie kombinieren?

chorn 13.02.2018 08:24

Ich grabe den Thread hier mal aus...

"location" finde ich nicht im Beispiel-XML, liegt aber dem XPath nach zu urteilen auf der gleichen Ebene. Dann müsste man erstmal wissen, in welcher Beziehung location zu organizer steht.


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:38 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023