Moin Moin,
ich habe eine fette XML seite die wie folgt aufgebaut ist.
<!--- XMl-- Anfang---->
<?xml version="1.0" encoding="utf-8" ?>
- <products>
- <product>
<TDProductId>123456789</TDProductId>
<name>AMILO A 1640</name>
<description>Mobile AMD Sempron 2800+, Microsoft® Windows® XP Home, 40 GB HDD, 2x256 MB RAM. DVD-Dual-Brenner Double Layer, 15,4" WXGA TFT.</description>
<imageUrl>http://www.mustermannpage.de/images/...110/124072.gif</imageUrl>
<productUrl>http://mustermannpage.de.com/click?a...&prod=25698741</productUrl>
<price>929.0</price>
<currency>EUR</currency>
- <TDCategories>
- <TDCategory>
<id>19</id>
<name>Laptops</name>
<merchantName>Notebooks/Notebooks FSC</merchantName>
</TDCategory>
</TDCategories>
- <fields>
- <field>
<name>Abmessungen (Breite x Tiefe x Höhe)</name>
<value>35.8 cm x 27.2 cm x 3.3 cm</value>
</field>
- <field>
<name>Audioausgang</name>
<value>Soundkarte</value>
</field>
- <field>
<name>Batterie</name>
<value>Lithium-Ionen</value>
</field>
- <field>
<name>Betriebssystem</name>
<value>Microsoft Windows XP Home Edition</value>
</field>
- <field> <!--gekürzt da die Details noch viel länger sind-->
</fields>
</product>
</products> <!--gekürzt da noch viele Produkte mehr folgen-->
<!----XML Ende---->
und hier der script mit dem ich die seite auslese.
<!---script anfang--->
<!--- Script Ende--->
das problem bei der sache ist nun folgendes.
ich möchte
- <field>
<name>Systemtyp</name>
<value>Notebook</value>
</field>
einzeln auslesen, weiss aber nicht wie ich den code dafür ändern muss. im moment haben ich <fields></fields> ausgelesen womit ich zwar die ergebnisse bekomme allerdings ohne leerstellen zwischen den <name>Systemtyp</name>
<value>Notebook</value>
was natürlich wenig sinn macht.
ausserdem: wenn ich ein produkt auf der seite habe, welches keine
- <field>
<name>Systemtyp</name>
<value>Notebook</value>
</field>
hat, (was ab und an vorkommt) dann gibt das script bei diesen betreffenden produkten keine description usw. aus. bei dem nächsten produkt mit <field> funktioniert es wieder, ausser das problem mit den leerstellen.
ich hoffe ihr habt in etwa verstanden was ich meine.
habt ihr ne lösung , ein anderes script oder die entsprechenden änderungen?
es sei angemerkt, dass ich fast nix über php weiss und ich froh bin das ich ein rssfeed einbinden kann. also seit gnädig und lacht nicht zu sehr über diese "blöde" frage.
mfg
ich habe eine fette XML seite die wie folgt aufgebaut ist.
<!--- XMl-- Anfang---->
<?xml version="1.0" encoding="utf-8" ?>
- <products>
- <product>
<TDProductId>123456789</TDProductId>
<name>AMILO A 1640</name>
<description>Mobile AMD Sempron 2800+, Microsoft® Windows® XP Home, 40 GB HDD, 2x256 MB RAM. DVD-Dual-Brenner Double Layer, 15,4" WXGA TFT.</description>
<imageUrl>http://www.mustermannpage.de/images/...110/124072.gif</imageUrl>
<productUrl>http://mustermannpage.de.com/click?a...&prod=25698741</productUrl>
<price>929.0</price>
<currency>EUR</currency>
- <TDCategories>
- <TDCategory>
<id>19</id>
<name>Laptops</name>
<merchantName>Notebooks/Notebooks FSC</merchantName>
</TDCategory>
</TDCategories>
- <fields>
- <field>
<name>Abmessungen (Breite x Tiefe x Höhe)</name>
<value>35.8 cm x 27.2 cm x 3.3 cm</value>
</field>
- <field>
<name>Audioausgang</name>
<value>Soundkarte</value>
</field>
- <field>
<name>Batterie</name>
<value>Lithium-Ionen</value>
</field>
- <field>
<name>Betriebssystem</name>
<value>Microsoft Windows XP Home Edition</value>
</field>
- <field> <!--gekürzt da die Details noch viel länger sind-->
</fields>
</product>
</products> <!--gekürzt da noch viele Produkte mehr folgen-->
<!----XML Ende---->
und hier der script mit dem ich die seite auslese.
<!---script anfang--->
PHP-Code:
<?php
$rdffile = "http://testpage.to/pf/pf?a=123465categoryId=19&maxResults=1000&firstResult=20";
$content = implode ("", file ($rdffile));
preg_match_all("|<product>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER);
for ($i=0;$i<count($items[1]);$i++)
{ preg_match_all(
"|<name>(.*)</name>(.*)<description>(.*)</description>(.*)<productUrl>(.*)</productUrl>(.*)
<price>(.*)</price>(.*)<currency>(.*)</currency>(.*)<fields>(.*)</fields>|Uism",
$items[1][$i], $regs, PREG_PATTERN_ORDER);
echo
"".utf8_decode($regs[1][0])."
<br>
".utf8_decode($regs[3][0])."
<br><br>
Preis: ".utf8_decode($regs[7][0])."
".utf8_decode($regs[9][0])."
<br>Hier sehen Sie die Details des ".utf8_decode($regs[1][0])."
<br>
- ".utf8_decode($regs[11][0])."
<br>
<a href='".utf8_decode($regs[5][0])."' target='_blank'>
Klicken Sie hier für alle Details</a><br><br>\n"; }
?>
das problem bei der sache ist nun folgendes.
ich möchte
- <field>
<name>Systemtyp</name>
<value>Notebook</value>
</field>
einzeln auslesen, weiss aber nicht wie ich den code dafür ändern muss. im moment haben ich <fields></fields> ausgelesen womit ich zwar die ergebnisse bekomme allerdings ohne leerstellen zwischen den <name>Systemtyp</name>
<value>Notebook</value>
was natürlich wenig sinn macht.
ausserdem: wenn ich ein produkt auf der seite habe, welches keine
- <field>
<name>Systemtyp</name>
<value>Notebook</value>
</field>
hat, (was ab und an vorkommt) dann gibt das script bei diesen betreffenden produkten keine description usw. aus. bei dem nächsten produkt mit <field> funktioniert es wieder, ausser das problem mit den leerstellen.
ich hoffe ihr habt in etwa verstanden was ich meine.
habt ihr ne lösung , ein anderes script oder die entsprechenden änderungen?
es sei angemerkt, dass ich fast nix über php weiss und ich froh bin das ich ein rssfeed einbinden kann. also seit gnädig und lacht nicht zu sehr über diese "blöde" frage.
mfg
Kommentar