ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
669
669
EMPFEHLEN
-
Hallö,
zuerst einmal, ja es gibt schon einen solchen Post mit fast dem gleichen Titel, aber da wird mir leider nicht geholfen:
Ich habe folgende XML Datei;
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<characterInfo> <characterTab> <character class="Hexer" name="Primus"> <items> <item durability="17" gem0Id="25897" gem1Id="32210" gem2Id="0" icon="inv_helmet_103" id="31051" maxDurability="60" permanentenchant="3002" randomPropertiesId="0" seed="0" slot="0"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_jewelry_necklace_29naxxramas" id="28762" maxDurability="0" permanentenchant="0" randomPropertiesId="0" seed="2142963485" slot="1"/> <item durability="18" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_shoulder_02" id="32338" maxDurability="60" permanentenchant="2982" randomPropertiesId="0" seed="0" slot="2"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_shirt_black_01" id="4336" maxDurability="0" permanentenchant="0" randomPropertiesId="0" seed="482354002" slot="3"/> <item durability="33" gem0Id="32206" gem1Id="0" gem2Id="0" icon="inv_chest_cloth_43" id="34936" maxDurability="100" permanentenchant="2661" randomPropertiesId="0" seed="0" slot="4"/> <item durability="16" gem0Id="32221" gem1Id="32210" gem2Id="0" icon="inv_belt_13" id="30038" maxDurability="35" permanentenchant="0" randomPropertiesId="0" seed="46065610" slot="5"/> <item durability="29" gem0Id="32206" gem1Id="0" gem2Id="0" icon="inv_pants_cloth_29" id="31053" maxDurability="75" permanentenchant="2746" randomPropertiesId="0" seed="0" slot="6"/> <item durability="17" gem0Id="32196" gem1Id="32207" gem2Id="0" icon="inv_boots_cloth_05" id="28517" maxDurability="50" permanentenchant="2649" randomPropertiesId="0" seed="621743632" slot="7"/> <item durability="16" gem0Id="32207" gem1Id="0" gem2Id="0" icon="inv_bracer_13" id="33285" maxDurability="35" permanentenchant="369" randomPropertiesId="0" seed="1267063988" slot="8"/> <item durability="9" gem0Id="32210" gem1Id="0" gem2Id="0" icon="inv_gauntlets_66" id="31050" maxDurability="35" permanentenchant="2935" randomPropertiesId="0" seed="0" slot="9"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_jewelry_ring_56" id="29367" maxDurability="0" permanentenchant="2928" randomPropertiesId="0" seed="0" slot="10"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_jewelry_ring_62" id="29287" maxDurability="0" permanentenchant="2928" randomPropertiesId="0" seed="1972991138" slot="11"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="ability_rogue_sinistercalling" id="34162" maxDurability="0" permanentenchant="0" randomPropertiesId="0" seed="0" slot="12"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_misc_head_troll_01" id="33829" maxDurability="0" permanentenchant="0" randomPropertiesId="0" seed="584815660" slot="13"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_misc_cape_20" id="33304" maxDurability="0" permanentenchant="2621" randomPropertiesId="0" seed="0" slot="14"/> <item durability="33" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_weapon_shortblade_64" id="33354" maxDurability="75" permanentenchant="2669" randomPropertiesId="0" seed="1806397994" slot="15"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_offhand_hyjal_d_01" id="30872" maxDurability="0" permanentenchant="0" randomPropertiesId="0" seed="1879533030" slot="16"/> <item durability="33" gem0Id="32205" gem1Id="0" gem2Id="0" icon="inv_wand_25" id="34347" maxDurability="75" permanentenchant="0" randomPropertiesId="0" seed="1811327094" slot="17"/> <item durability="0" gem0Id="0" gem1Id="0" gem2Id="0" icon="inv_shirt_15" id="31404" maxDurability="0" permanentenchant="0" randomPropertiesId="0" seed="481341951" slot="18"/> </items> </characterTab> </characterInfo>
Diese lese ich mit SimpleXML aus. So weit so gut, ich kann den Namen mit
Code :1
echo $xml->characterInfo->character['name']
ganz einfach auslesen.
Jetzt möchte ich aber alle
Code :1
$xml->characterInfo->characterTab->items->item['id']
auslesen und da wirds schwierig, da ich immer nur das erste bekomme. Leider habe ich wie gesagt nur ein Post dazu gefunden, der schlägt (unzureichend) nur das vor:
Code :1 2 3
foreach( [FONT=Courier New][SIZE=2][FONT=Courier New][SIZE=2]$xml->characterInfo->characterTab->items->item[/SIZE][/FONT][/SIZE][/FONT] as $item ) { echo htmlspecialchars($item). '<br>'; }
Das funktioniert aber nicht, ich bekomme Leerzeilen, genau in der Anzahl, wie <item> tags vorhanden sind.
Steh ich völlig auf dem Schlauch, oder ist das unmöglich?
Für jeden Denkanstoß bin ich dankbar.
LG
PrimuS
-
Hi, was du dort machst kann schon allein desshalb nicht funktionieren, weil du 1. eine fehlerhafte XML Datei hast und 2. die Daten der Datei falsch ansprichst.
zu 1: Das Element <character> muss entweder als inhaltsleer gekennzeichnet werden, also <character/> oder an der passenden Stelle ein Endelement eingefügt werden, also </character>. Ausserdem fehlt am Anfang deiner Datei eine XML-Deklaration, die folgendermassen aussehen muss:Bei encoding natürlich dann entsprechend die richtige Kodierung angeben. Falls sie UTF-8 ist, kann man das encoding Attribut auch einfach weglassen.Code :1
<?xml version="1.0" encoding="UTF-8" ?>
zu 2: Ein wenig mehr grundsätzliches Verständnis von XML und DOM, bzw. mal ein Blick in die SimleXML Dokumentation offenbahrt, dass man den Wurzelknoten des XML-Baums (in deinem Fall ist das <charachterInfo>) nicht mit angeben muss, wenn man auf Elemente zugreift. Hier mal ein kleines Beispiel, wie man an das Icon für jedes Item kommt:Ich hoffe, das hilft weiter, und empfehle dir, mal die Beispiele von php.net genau anzuschauen, die sind recht gut und dürften die meisten Fragen beantworten.PHP-Code:foreach( $xml->characterTab->items->item as $item )
{
echo htmlspecialchars($item['icon']) . '<br />';
}
"Die Deutsche Rechtschreibung ist Freeware, dass heisst jeder kann sie benutzen wann er will, ohne dafür zu zahlen. Sie ist aber nicht Open Source, also darf sie ohne Zustimmung der Entwickler nicht verändert und weiterverbreitet werden."
-
vielen Dank, das hat mir sehr weitergeholfen, allerdings funktionierte es nicht 100%, ich habe es jetzt so:
Ich musste <characterInfo> mit reinnehmen, sonst gab's 'nen Error?!Code :1 2 3 4
foreach( $xml->characterInfo->characterTab->items->item as $item ) { echo htmlspecialchars($item['id']). "<br \>"; }
Traumhaft, da werden Sie geholfen!
thx bb
PrimuS
Ähnliche Themen
-
simplexml tags kopieren
Von Sixty im Forum PHPAntworten: 3Letzter Beitrag: 10.06.10, 12:29 -
Ordner nach XML durchsuchen und einlesen mit SimpleXML
Von Cluster im Forum PHPAntworten: 11Letzter Beitrag: 04.09.09, 17:36 -
XML einlesen mit SimpleXML
Von mcready im Forum PHPAntworten: 2Letzter Beitrag: 19.01.09, 16:16 -
XML Datei mit mehreren gleichen Tags auslesen
Von Boof im Forum PHPAntworten: 2Letzter Beitrag: 01.04.08, 13:00 -
[flash5] xml mit html-tags einlesen
Von AleX im Forum Flash PlattformAntworten: 2Letzter Beitrag: 21.07.03, 12:05





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren