Xml mit Attribulten und Child attributen auslesen.

Sylance

Mitglied
Huhu ich habe ein kleines Problem. Und zwar versuche ich XML Dateien auszulesen. Es sind eine ganze Menge Files aber eisn nach dem anderen.

hier erstmal 2 Beispiel Einträge aus der ersten XML:

Code:
<item id="1" type="Weapon" name="Short Sword">
		<set name="icon" val="icon.weapon_small_sword_i00" />
		<set name="default_action" val="equip" />
		<set name="weapon_type" val="sword" />
		<set name="bodypart" val="rhand" />
		<set name="random_damage" val="10" />
		<set name="attack_range" val="40" />
		<set name="damage_range" val="0;0;40;120" />
		<set name="immediate_effect" val="1" />
		<set name="material" val="steel" />
		<set name="weight" val="1600" />
		<set name="price" val="590" />
		<set name="soulshots" val="1" />
		<set name="spiritshots" val="1" />
		<for>
			<set order="0x08" stat="pAtk" val="8" />
			<set order="0x08" stat="mAtk" val="6" />
			<set order="0x08" stat="rCrit" val="8" />
			<set order="0x08" stat="pAtkSpd" val="379" />
			<enchant val="0" order="0x0C" stat="pAtk" />
			<enchant val="0" order="0x0C" stat="mAtk" />
		</for>
	</item>

	<item id="99" type="Weapon" name="Apprentice's Spellbook">
		<set name="icon" val="icon.weapon_apprentices_spellbook_i00" />
		<set name="default_action" val="equip" />
		<set name="weapon_type" val="etc" />
		<set name="bodypart" val="rhand" />
		<set name="random_damage" val="10" />
		<set name="attack_range" val="40" />
		<set name="damage_range" val="0;0;40;120" />
		<set name="immediate_effect" val="1" />
		<set name="material" val="paper" />
		<set name="weight" val="650" />
		<set name="price" val="9600" />
		<set name="soulshots" val="1" />
		<set name="spiritshots" val="1" />
		<set name="is_magic_weapon" val="true" />
		<for>
			<set order="0x08" stat="pAtk" val="9" />
			<set order="0x08" stat="mAtk" val="12" />
			<set order="0x08" stat="rCrit" val="8" />
			<set order="0x08" stat="pAtkSpd" val="379" />
			<enchant val="0" order="0x0C" stat="pAtk" />
			<enchant val="0" order="0x0C" stat="mAtk" />
		</for>
	</item>


So nun möchte ich gerne das Id,Typ und Name ausgegeben werden.
Die erreiche ich so:

Code:
<?php
    $data = '../l2j_xml/items/00000-00099.xml';
    
    if(file_exists($data)) {
        $xml = simplexml_load_file($data);     //Lädt die XML-Datei in ein 
                                    //Objekt
        if($xml) {    //Prüfen, ob Datei Fehler enthielt
            ?>
        <table>

<?php
 for($i=0;$i<99;$i++)
 {
?>
            <tr>
        
                <td><?php $attrs1 = $xml->item[$i]->attributes();
			echo $attrs1['id'], "<br />";
			echo $attrs1['type'], "<br />";
			echo $attrs1['name'], "<br />";
			?> </td>
            </tr>

<?php

nur wie bekomme ich es hin das er mir auch
"weight: 650" oder
"Attackrange: 40" oder
"is_magic_weapon" anzeigt?

also was muss ich verändern um auf den "name" und den "val" Wert der "set names" zuzugreifen?

Ich habe bereits folgendes (und einiges andere versucht:

Code:
<?php
    $data = '../l2j_xml/items/00000-00099.xml';
    
    if(file_exists($data)) {
        $xml = simplexml_load_file($data);     //Lädt die XML-Datei in ein 
                                    //Objekt
        if($xml) {    //Prüfen, ob Datei Fehler enthielt
            ?>
        <table>

<?php
 for($i=0;$i<99;$i++)
 {
?>
            <tr>
        
                <td><?php $attrs1 = $xml->item[$i]->attributes();
			$attrs2 = $xml->item[$i]->set->attributes();
			echo $attrs1['id'], "<br />";
			echo $attrs1['type'], "<br />";
			echo $attrs1['name'], "<br />";
			echo $attrs2['weight'], "<br />";
			?> </td>
            </tr>

<?php

Kann mir wer helfen?^^

Thx Torvitas
 
Zuletzt bearbeitet:
Vielleicht so?

PHP:
echo '<table border="1">';
for($i=0;$i < count($xml);$i++)
{
   echo ' <tr>';
   foreach($xml->item[$i]->set->attributes() as $key => $attribute)
   {
       echo '<td>';
       echo $attribute;
       echo '</td>';
   }
   echo ' </tr>';
}
echo '</table>';

Wünsche noch frohe Restweihnachten.
 
nu kommt:

Parse error: syntax error, unexpected $end in /usr/www/users/lhchro/dropcalc_test/xmltest2.php on line 25

$end******

mein code sieht so aus:

PHP:
<?php

    $data = '../l2j_xml/items/00000-00099.xml';
    
    if(file_exists($data)) {
        $xml = simplexml_load_file($data);     //Lädt die XML-Datei in ein 
                                    //Objekt
        if($xml) {    //Prüfen, ob Datei Fehler enthielt
           
       

echo '<table border="1">';
for($i=0;$i < count($xml);$i++)
{
   echo ' <tr>';
   foreach($xml->item[$i]->set->attributes() as $key => $attribute)
   {
       echo '<td>';
       echo $attribute;
       echo '</td>';
   }
   echo ' </tr>';
}
echo '</table>';  
?>
 
Zurück