Webmaster Forum von Webmaster-Resource.de
»
Webcoding
»
PHP
(Moderatoren:
Christian Felken
,
» тнє $υι¢ι∂є « ™
)
[php][xml] Probleme beim ausgeben von xml mit php.
Username:
1 Stunde
1 Tag
1 Woche
1 Monat
Immer
Password:
Übersicht
Hilfe
Suche
Quick Search
Advanced Search
Einloggen
Registrieren
« vorheriges
nächstes »
Seiten: [
1
]
Topic Tools
Topic Tools
Drucken
11. Juni 2007, 14:48:11
#0
Psychokiller
Psychokiller
Show Psychokiller's last posts.
Show general stats for Psychokiller.
Newbie
Beiträge: 7
[php][xml] Probleme beim ausgeben von xml mit php.
Hallo,
vorab ich bin noch ein Kacknoob was das ganze angeht, hab also nicht sehr viel Ahnung von php usw..
Ich habe hier eine xml Datei die ich gerne ausgeben bzw. gewissen Inhalt in eine Datenbank schreiben möchte.
Das Problem ist jetzt das ich nicht genau weis wie das alles so funktioniert.
Hier mal die xml Datei:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<RaidInfo>
<Loot>
<key1>
<ItemName>Schulterstücke des Rechtsuchers</ItemName>
<ItemID>28666:0:0:0:0:0:0:1169346118</ItemID>
<Icon>INV_Shoulder_35</Icon>
<Class>Rüstung</Class>
<SubClass>Platte</SubClass>
<Color>ffa335ee</Color>
<Count>1</Count>
<Player>NAME</Player>
<Time>05/27/07 19:07:59</Time>
<Zone>Karazhan</Zone>
<Boss>Shade of Aran</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Shade of Aran]]></Note>
</key1>
<key2>
<ItemName>Vorherrschaftsstab von Tirisfal</ItemName>
<ItemID>28673:0:0:0:0:0:0:1437781574</ItemID>
<Icon>INV_Wand_21</Icon>
<Class>Waffe</Class>
<SubClass>Zauberstäbe</SubClass>
<Color>ffa335ee</Color>
<Count>1</Count>
<Player>NAME</Player>
<Time>05/27/07 19:08:35</Time>
<Zone>Karazhan</Zone>
<Boss>Shade of Aran</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Shade of Aran]]></Note>
</key2>
<key3>
<ItemName>Stiefel des Scheusaltöters</ItemName>
<ItemID>28746:0:0:0:0:0:0:-2110125448</ItemID>
<Icon>INV_Boots_Chain_05</Icon>
<Class>Rüstung</Class>
<SubClass>Schwere Rüstung</SubClass>
<Color>ffa335ee</Color>
<Count>1</Count>
<Player>NAME</Player>
<Time>05/27/07 19:34:29</Time>
<Zone>Karazhan</Zone>
<Boss>Chess Event</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Chess Event]]></Note>
</key3>
<key4>
<ItemName>Beinplatten des Unschuldigen</ItemName>
<ItemID>28748:0:0:0:0:0:0:-1841689992</ItemID>
<Icon>INV_Pants_Plate_18</Icon>
<Class>Rüstung</Class>
<SubClass>Platte</SubClass>
<Color>ffa335ee</Color>
<Count>1</Count>
<Player>NAME</Player>
<Time>05/27/07 19:35:07</Time>
<Zone>Karazhan</Zone>
<Boss>Chess Event</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Chess Event]]></Note>
</key4>
<key5>
<ItemName>Kristall der Leere</ItemName>
<ItemID>22450:0:0:0:0:0:0:2072690686</ItemID>
<Icon>INV_Enchant_VoidCrystal</Icon>
<Class>Handwerkswaren</Class>
<SubClass>Handwerkswaren</SubClass>
<Color>ffa335ee</Color>
<Count>0</Count>
<Player>NAME</Player>
<Time>05/27/07 19:35:18</Time>
<Zone>Karazhan</Zone>
<Boss>Chess Event</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Chess Event]]></Note>
</key5>
<key6>
<ItemName>Talbalgbrustharnisch des Gorillas</ItemName>
<ItemID>24904:0:0:0:0:0:-10:1704919095</ItemID>
<Icon>INV_Shirt_04</Icon>
<Class>Rüstung</Class>
<SubClass>Schwere Rüstung</SubClass>
<Color>ff1eff00</Color>
<Count>1</Count>
<Player>NAME</Player>
<Time>05/27/07 18:18:14</Time>
<Zone>Karazhan</Zone>
<Boss>Trash mob</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Trash mob]]></Note>
</key6>
<key7>
<ItemName>Knochenfresserschädelkappe der Intelligenz</ItemName>
<ItemID>24777:0:0:0:0:0:-19:1006567476</ItemID>
<Icon>INV_Helmet_15</Icon>
<Class>Rüstung</Class>
<SubClass>Leder</SubClass>
<Color>ff1eff00</Color>
<Count>1</Count>
<Player>NAME</Player>
<Time>05/27/07 17:57:08</Time>
<Zone>Karazhan</Zone>
<Boss>Trash mob</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Trash mob]]></Note>
</key7>
</Loot>
</RaidInfo>
Das eigentliche Problem ist jetzt das <key1>, <key2> usw.
Wenn ich die Zahlen hinter dem <key> wegmache funktioniert es eigentlich so wie ich es haben will aber auch nicht direkt so wie ich es mir vorstelle. ^^
Kann ja mal zeigen wie das Script aussieht wie es im mom funktioniert wenn ich die Zahlen wegmache hinter dem Key (aber bitte nicht lachen XD).
Code:
<?php
include
'config1.php'
;
$raid
=
simplexml_load_file
(
"raid.xml"
);
for(
$i
=
0
;
$i
<=
10
;
$i
++)
{
$itemname
=
$raid
->
Loot
->
key
[
$i
]->
ItemName
;
$itemid
=
$raid
->
Loot
->
key
[
$i
]->
ItemID
;
$itemid
=
trim
(
$itemid
,
"item:"
);
$itemid
=
preg_split
(
"/:/"
,
$itemid
);
$icon
=
$raid
->
Loot
->
key
[
$i
]->
Icon
;
$class
=
$raid
->
Loot
->
key
[
$i
]->
Class
;
$subclass
=
$raid
->
Loot
->
key
[
$i
]->
SubClass
;
$color
=
$raid
->
Loot
->
key
[
$i
]->
Color
;
if (
$color
==
'ffa335ee'
) {
$color
=
'epic'
;}
if (
$color
==
"ff0070dd"
) {
$color
=
'rare'
;}
if (
$color
==
"ff1eff00"
) {
$color
=
'uncommon'
;}
$player
=
$raid
->
Loot
->
key
[
$i
]->
Player
;
$time
=
$raid
->
Loot
->
key
[
$i
]->
Time
;
$zone
=
$raid
->
Loot
->
key
[
$i
]->
Zone
;
$boss
=
$raid
->
Loot
->
key
[
$i
]->
Boss
;
$sql
=
"SELECT * FROM items WHERE itemid='$itemid[0]'"
;
$data
=
mysql_query
(
$sql
,
$db
);
while (
$item
=
mysql_fetch_object
(
$data
)) {
$doppelt
=
$item
->
itemid
;}
if (!empty(
$itemid
[
0
]) AND
$doppelt
!=
$itemid
[
0
] AND
$color
!=
'uncommon'
) {
$SQL
=
"INSERT INTO items (itemname, itemid, icon, class, subclass, color, player, time, zone, boss) VALUES ('$itemname', '$itemid[0]', '$icon', '$class', '$subclass', '$color', '$player', '$time', '$zone', '$boss')"
;
mysql_query
(
$SQL
,
$db
);}
}
?>
Aber eigentlich möchte ich es so (sofern das überhaupt möglich ist), die xml Datei soll ausgelesen werden so das er automatisch weiss wieviele <key1>,<key2> usw. in der xml Datei sind und er mir das ganze dann halt automatisch direkt in die Datenbank schreibt.
Also so wie es das Script oben auch macht, nur eben so das ich nicht vorher noch was in der xml datei umschreiben muss.
Und das ich diese for schleife da evtl. nicht mehr brauche aber habs halt nur damit so hinbekommen wie ich es wollte. ^^
Mit freundlichen Grüßen
Psychokiller
«
Letzte Änderung: 11. Juni 2007, 15:16:33 von EpiX
»
12. Juni 2007, 09:21:14
#1
Christian Felken
Christian Felken
Visit Christian Felken's website.
Show Christian Felken's last posts.
Show general stats for Christian Felken.
Administrator
PHP Scripter
Beiträge: 178
Wombat - So Cute!
Re: [php][xml] Probleme beim ausgeben von xml mit php.
Hallo und willkommen beim Webmaster Resource Forum!
Die Syntax der XML-Quelldatei ist leider nicht korrekt. Key1, Key2 usw. macht tatsächlich keinen Sinn. Ebenso wenig die deutschen Umlaute! Die müssen entsprechend kodiert werden. Ansonsten wird das immer wieder zu Problemen führen und Du bastelst nur an Deinem Script zum Auslesen rum.
Wenn die Quelldatei im korrekten Format ist, kannst Du auch die XML Parser Funktionen von PHP benutzen:
Code:
<?php
$DateinameXML
=
"1.xml"
;
$FilePointer
=
fopen
(
$DateinameXML
,
"r"
);
$Daten
=
fread
(
$FilePointer
,
filesize
(
$DateinameXML
));
fclose
(
$FilePointer
);
$Parser
=
xml_parser_create
();
xml_parse_into_struct
(
$Parser
,
$Daten
,
$arrValues
,
$arrIndex
);
xml_parser_free
(
$Parser
);
echo
"Index array\n"
;
print_r
(
$arrIndex
);
echo
"\nVals array\n"
;
print_r
(
$arrValues
);
?>
Den Array musst Du dann selbstverständlich noch in die MySQL-Tabelle einlesen.
Viele Grüße
Christian Felken
Webmaster Resource - Alles für Webmaster!
www.webmaster-resource.de
12. Juni 2007, 11:08:53
#2
Psychokiller
Psychokiller
Show Psychokiller's last posts.
Show general stats for Psychokiller.
Newbie
Beiträge: 7
Re: [php][xml] Probleme beim ausgeben von xml mit php.
Vielen dank für deine Antwort nur bin ich jetzt leicht überfordert.
Ich habe jetzt zumindest schonmal die möglichkeit die xml Datei auszulesen mit php 4, was sehr gut ist da ich sonst alles immer per php 5 von meinem Rechner in die andere Datenbank übertragen musste da bei uns auf dem server nur php 4 läuft.
Das mit den Umlauten sollte kein Problem sein zumindest was das ausgeben betrifft.
Dafür benutze ich dann:
<meta charset="utf-8">
Nur versteh ich jetzt nicht mehr was ich machen muss um auf die einzelnen inhalte zuzugreifen.
Habe jetzt hier mal dein Script benutzt:
http://www.gilde.cs-united.de/xml/test.php
jetzt bekomme ich eine wilde Ausgabe und versteh davon nur Bahnhof.
Im seiten Quelltext sieht das ganze noch geordnet aus aber verstehen tu ich trotzdem nichts.
Also die Struktur des auszulesenden abschnitts sieht ja wie folgt aus.
Code:
<key>
<ItemName>Schulterstücke des Rechtsuchers</ItemName>
<ItemID>28666:0:0:0:0:0:0:1169346118</ItemID>
<Icon>INV_Shoulder_35</Icon>
<Class>Rüstung</Class>
<SubClass>Platte</SubClass>
<Color>ffa335ee</Color>
<Count>1</Count>
<Player>Crasp</Player>
<Time>05/27/07 19:07:59</Time>
<Zone>Karazhan</Zone>
<Boss>Shade of Aran</Boss>
<Note><![CDATA[ - Zone: Karazhan - Boss: Shade of Aran]]></Note>
</key>
Davon hab ich ja jetzt nen paar immer unterschiedlich wieviele es sind.
Jetzt möchte ich ja den Inhalt von den einzelnen Sachen in die Datenbank schreiben ausser den Teil in <note></note>.
Nur hab ich wie gesagt jetzt keine Ahnung mehr wie ich das jetzt machen soll bzw. wie das funktioniert.
(jetzt versteh ich auch wieso das andere Simplexml heist) ^^
«
Letzte Änderung: 23. Juni 2007, 14:49:22 von EpiX
»
13. Juni 2007, 10:03:00
#3
Christian Felken
Christian Felken
Visit Christian Felken's website.
Show Christian Felken's last posts.
Show general stats for Christian Felken.
Administrator
PHP Scripter
Beiträge: 178
Wombat - So Cute!
Re: [php][xml] Probleme beim ausgeben von xml mit php.
Leider kann ich nur Pseudocode liefern, da ich im Moment einfach zu wenig Zeit habe:
Wenn Du Dir den Array mit den Werten anguckst, gibt es folgende Struktur:
[2] => Array
(
[tag] => KEY
[type] => open
[level] => 3
[value] =>
)
[3] => Array
(
[tag] => ITEMNAME
[type] => complete
[level] => 4
[value] => Schulterstücke des Rechtsuchers
)
...
[27] => Array
(
[tag] => KEY
[type] => close
[level] => 3
)
Also mit einer/mehreren Schleife und diversen IF-Abfragen durch den Array gehen und dabei die SQL-Befehle zusammenbauen. Beispielsweise fängt immer ein neuer Eintrag (KEY) an, wenn Du auf [tag] == "KEY" und [type] == "open" stößt. Danach folgende dann alle Tags des niedrigsten Levels (4), die jeweils vollständig (complete) sind. Nachdem Du durch alle Einzeltags durch bist, kommt das Ende des Eintrages (wenn [tag] == "KEY" und [type] == "close").
Viele Grüße
Christian Felken
Webmaster Resource - Alles für Webmaster!
www.webmaster-resource.de
15. Juni 2007, 00:33:34
#4
Daniel
Daniel
Visit Daniel's website.
Show Daniel's last posts.
Show general stats for Daniel.
Webseiten-Junkie
Beiträge: 296
Re: [php][xml] Probleme beim ausgeben von xml mit php.
Hallo,
Deine XML-Datei lässt sich nicht einlesen / umwandeln weil es dort ungültige Zeichen / Umlaute gibt.
Habe mal schnell eine Funktion zum bereinigen geschrieben um alle Wert in dem Array zu erfassen.
Die XML - Datei habe ich unter xml.xml gespeichert
hier der Code:
Code:
<?php
function
uni_code
(
$string
){
// Kleine Funktion um in XML unzulässige Zeichen zu ersetzen
$zeichen
= array(
" "
,
"¡"
,
"¢"
,
"£"
,
"¤"
,
"¥"
,
"¦"
,
"§"
,
"¨"
,
"©"
,
"ª"
,
"«"
,
"¬"
,
""
,
"®"
,
"¯"
,
"°"
,
"±"
,
"²"
,
"³"
,
"´"
,
"µ"
,
"¶"
,
"·"
,
"¸"
,
"¹"
,
"º"
,
"»"
,
"¼"
,
"½"
,
"¾"
,
"¿"
,
"À"
,
"Á"
,
"Â"
,
"Ã"
,
"Ä"
,
"Å"
,
"Æ"
,
"Ç"
,
"È"
,
"É"
,
"Ê"
,
"Ë"
,
"Ì"
,
"Í"
,
"Î"
,
"Ï"
,
"Ð"
,
"Ñ"
,
"Ò"
,
"Ó"
,
"Ô"
,
"Õ"
,
"Ö"
,
"×"
,
"Ø"
,
"Ù"
,
"Ú"
,
"Û"
,
"Ü"
,
"Ý"
,
"Þ"
,
"ß"
,
"à"
,
"á"
,
"â"
,
"ã"
,
"ä"
,
"å"
,
"æ"
,
"ç"
,
"è"
,
"é"
,
"ê"
,
"ë"
,
"ì"
,
"í"
,
"î"
,
"ï"
,
"ð"
,
"ñ"
,
"ò"
,
"ó"
,
"ô"
,
"õ"
,
"ö"
,
"÷"
,
"ø"
,
"ù"
,
"ú"
,
"û"
,
"ü"
,
"ý"
,
"þ"
,
"ÿ"
);
$ersetzung
= array(
"&#160;"
,
"&#161;"
,
"&#162;"
,
"&#163;"
,
"&#164;"
,
"&#165;"
,
"&#166;"
,
"&#167;"
,
"&#168;"
,
"&#169;"
,
"&#170;"
,
"&#171;"
,
"&#172;"
,
"&#173;"
,
"&#174;"
,
"&#175;"
,
"&#176;"
,
"&#177;"
,
"&#178;"
,
"&#179;"
,
"&#180;"
,
"&#181;"
,
"&#182;"
,
"&#183;"
,
"&#184;"
,
"&#185;"
,
"&#186;"
,
"&#187;"
,
"&#188;"
,
"&#189;"
,
"&#190;"
,
"&#191;"
,
"&#192;"
,
"&#193;"
,
"&#194;"
,
"&#195;"
,
"&#196;"
,
"&#197;"
,
"&#198;"
,
"&#199;"
,
"&#200;"
,
"&#201;"
,
"&#202;"
,
"&#203;"
,
"&#204;"
,
"&#205;"
,
"&#206;"
,
"&#207;"
,
"&#208;"
,
"&#209;"
,
"&#210;"
,
"&#211;"
,
"&#212;"
,
"&#213;"
,
"&#214;"
,
"&#215;"
,
"&#216;"
,
"&#217;"
,
"&#218;"
,
"&#219;"
,
"&#220;"
,
"&#221;"
,
"&#222;"
,
"&#223;"
,
"&#224;"
,
"&#225;"
,
"&#226;"
,
"&#227;"
,
"&#228;"
,
"&#229;"
,
"&#230;"
,
"&#231;"
,
"&#232;"
,
"&#233;"
,
"&#234;"
,
"&#235;"
,
"&#236;"
,
"&#237;"
,
"&#238;"
,
"&#239;"
,
"&#240;"
,
"&#241;"
,
"&#242;"
,
"&#243;"
,
"&#244;"
,
"&#245;"
,
"&#246;"
,
"&#247;"
,
"&#248;"
,
"&#249;"
,
"&#250;"
,
"&#251;"
,
"&#252;"
,
"&#253;"
,
"&#254;"
,
"&#255;"
);
return
str_replace
(
$zeichen
,
$ersetzung
,
$string
);
}
$Daten
=
file
(
'xml.xml'
);
// Daten in ein Array einlesen
foreach(
$Daten
as
$key
=>
$value
){
// Array durchlaufen
$val1
=
explode
(
'>'
,
$value
);
// Werte stehen ja immer nach einem >
if(
$val1
[
1
])
// Falls des [1] gibt, ist ein Wert vorhanden
{
$val2
=
explode
(
'<'
,
$val1
[
1
]);
// jetzt noch das Ende finden, ist ja immer <
if(
$val2
[
0
])
// der Wert liegt jetzt im index [0]
{
$Daten
[
$key
]=
ereg_replace
(
$val2
[
0
],
uni_code
(
$val2
[
0
]),
$Daten
[
$key
]);
// Wert kodieren
}
}
}
// ab hier habe ich keine Ahnung, ist der Code von Christian bis auf $Daten_clean
$Daten_clean
=
implode
(
''
,
$Daten
);
$Parser
=
xml_parser_create
();
xml_parse_into_struct
(
$Parser
,
$Daten_clean
,
$arrValues
,
$arrIndex
);
xml_parser_free
(
$Parser
);
echo
"Index array\n"
;
print_r
(
$arrIndex
);
echo
"\nVals array\n"
;
print_r
(
$arrValues
);
?>
Hoffe ich konnte Dir helfen.
Daniel
Bitte den Quellcode in der angehängten ZIP-Datei verwenden, da auch hier im Forum Sonderzeichen umgewandelt werden.
25. Juni 2007, 16:59:55
#5
Psychokiller
Psychokiller
Show Psychokiller's last posts.
Show general stats for Psychokiller.
Newbie
Beiträge: 7
Re: [php][xml] Probleme beim ausgeben von xml mit php.
vielen dank dafür aber epix hat sich jetzt dem problem angenommen und hilft mir.
aber einer sache stimmt bei deinem teil nicht es werden jetzt zwar sonderzeichen richtig angezeigt aber leerzeichen als fragezeichen ^^
Seiten: [
1
]
« vorheriges
nächstes »
Gehe zu:
Bitte wählen Sie ein Ziel:
-----------------------------
Aktuelles
-----------------------------
=> Ankündigungen und Regeln
=> Feedback zum Forum
-----------------------------
Webcoding
-----------------------------
=> PHP
=> Datenbanken
=> HTML, CSS und Javascript
=> Weitere Sprachen (ASP, Coldfusion, Perl etc.)
=> Webserver
-----------------------------
SEO
-----------------------------
=> Saubere Seo Techniken
===> Scripte & Software
===> Linktausch & Linkpartner finden
===> Allgemeine Fragen
===> Linkbuilding
===> Content generieren
===> Blog & Ping
===> Scripts & Software
-----------------------------
Online Marketing
-----------------------------
=> Affiliate Marketing
=> Email Marketing
=> Suchmaschinen Marketing
-----------------------------
Sonstiges
-----------------------------
=> Scripte
=> Tutorials
=> Browser und Software
=> Betriebssysteme
=> Jobangebote / Jobgesuche
=> Off-Topic
=> Test-Forum
Lade...