| XML Hier passt alles rein, was das Thema XML (XSLT, etc...) betrifft, auch in Verbindung mit PHP |
 |

11-06-2005, 18:52
|
|
Bluster
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 4
|
|
Suche XMl Parsen
Hi
Ich versuche mich grade im XML verarbeiten
und zwar habe ich vor, XML-Dateien wie diese auszulesen, am besten in verschachtelte arrays zu packen und dann nach und nach aufzudröseln um sie dann z.B. in einer Datenbank zu speichern (man kann natürlich selber XML-Dateien angeben  )
das klappt bis jetzt auch ganz gut, abgesehen davon, dass in der XML datei für manche einträge "id" attribute vergeben wurden. Dadurch nimmt mein script aber nur den letzten eintrag aus dieser gruppe an
Code:
<entry id="0">
<count>134234</count>
<name>Test1</name>
</entry>
<entry id="1">
<count>24234</count>
<name>Test2</name>
</entry>
meine funktion bis jetzt:
PHP-Code:
function xml2array($text) {
$reg_exp = '/<(.*?)>(.*?)<\/\\1>/s';
preg_match_all($reg_exp, $text, $match);
foreach ($match[1] as $key=>$val) {
if ( preg_match($reg_exp, $match[2][$key]) )
{
$array[$val][] = xml2array($match[2][$key]);
}
else
{
$array[$val] = $match[2][$key];
}
}
return $array;
}
|

11-06-2005, 18:53
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
Klingt so weit alles ganz nett, aber was willst du eigentlich?
|

11-06-2005, 19:52
|
|
Bluster
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 4
|
|
ich bekomme das:
Array ( [0] => Array ( [count] => 24234 [name] => Test2 ) )
Will aber in etwa folgendes:
Array ( [0] => Array ( [count] => 134234 [name] => Test1 ) [1] => Array ( [count] => 24234 [name] => Test2 ) )
weiß aber nicht wie
grundlage is halt der code da oben
|

11-06-2005, 20:03
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
Dann zeig mal bitte deine Ansätze.
Ein Scriptgesuch ist das nämlich nicht. *verschieb*
|

11-06-2005, 21:54
|
|
Bluster
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 4
|
|
also, ich hab folgenden ansatz (ziemlich ausgereift eigentlich)
PHP-Code:
function fetchUrlWithoutHanging($url)
{
for feed before displaying page without feed
$numberOfSeconds=4;
error_reporting(0);
$url = str_replace("http://","",$url);
$urlComponents = explode("/",$url);
$domain = $urlComponents[0];
$resourcePath = str_replace($domain,"",$url);
$socketConnection = fsockopen($domain, 80, $errno, $errstr, $numberOfSeconds);
if (!$socketConnection)
{
Web site
print("<!-- Network error: $errstr ($errno) -->");
}
else {
$xml = '';
fputs($socketConnection, "GET /$resourcePath HTTP/1.0\r\nUser-Agent: POWER PHP (Mozilla Compatible)\r\n\r\n");
while (!feof($socketConnection))
{
$xml .= fgets($socketConnection, 128);
}
fclose ($socketConnection);
}
return($xml);
}
function xml2array($text) {
$reg_exp = '/<(.*?)>(.*?)<\/\\1>/s';
preg_match_all($reg_exp, $text, $match);
foreach ($match[1] as $key=>$val) {
if ( preg_match($reg_exp, $match[2][$key]) )
{
$array[$val][] = xml2array($match[2][$key]);
}
else
{
$array[$val] = $match[2][$key];
}
}
return $array;
}
$array = xml2array(fetchUrlWithoutHanging($_POST[xml]));
als $_POST[xml] wird folgende URL übertragen:
http://report.fatal-vortex.de/report...8a762.34748954
|

11-06-2005, 22:03
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
PHP-Code:
function xml2array($text) {
$p = xml_parser_create();
xml_parse_into_struct($p, $text, $vals, $tags);
xml_parser_free($p);
foreach ($tags['NAME'] as $k=>$v) {
$out[$k] = array(
'name' => $vals[$v]['value'],
'count' => $vals[$tags['COUNT'][$k]]['value']
);
}
return $out;
}
EDIT: bezieht sich auf dein Beispiel, foreach-Schleife muß auf deine XML-Struktur angepasst werden
|

13-06-2005, 15:15
|
|
Bluster
Newbie
|
|
Registriert seit: Jun 2005
Beiträge: 4
|
|
hm, ja, das is ja soweit schon ganz gut
das problem is: das da ganz oben is ja nur ein auszug
der link in meinem letzen beitrag führt zur original-datei, und sind die dann unterschiedlich
manche mit, manche ohne id
hier nochma der link
und: nein, ich kann die xml-datei nich ändern, bevor das einer fragt.
das is ja grad mein problem
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|