Seite 1 von 1

SimpleXML und tag mit punkt!!!

Verfasst: 27.09.2009, 16:23
von smilla
Huhu,

mit simplexml komme ich in der regel gut zurecht, hab hier nun allerdings ein problem, wo ich nicht weiterkomme. hier ein beispiel xml:

Code: Alles auswählen

<?xml version="1.0"?>
<start>
	<files.index Generated="20090927033737">
		<file Product_ID="2622046" Prod_ID="15939529" Catid="575" Model_Name="FinePix Z30 Digital Camera">
		</file>
		<file Product_ID="2622048"  Prod_ID="15939256" Catid="575" Model_Name="FinePix Z30 Digital Camera">
		</file>
	</files.index>
</start>

Nun will ich das Parsen und habe bisher dies hier:

Code: Alles auswählen

$xml = new SimpleXMLElement&#40;$content&#41;;
foreach &#40;$xml->files.index->file as $file&#41; 
&#123;
   echo $file&#91;'Product_ID'&#93; . "<br>";
&#125;
Dieses "files.index" macht mir sorgen. Das funktioniert so nicht. Wie kann ich dies dennoch mit simplexml parsen. Gibt es da eine Möglichkeit?

Temporär läuft es erstmal mit einem str_replace als Hilfe

Smilla

Verfasst:
von

Verfasst: 28.09.2009, 12:23
von Lord Lommel
SimpleXML hat seine Grenzen und ich vermute, du hast grade eine erreicht. Wenn Googlen nichts bringt, dann mußt du wohl auf was anderes umsteigen.

Verfasst: 28.09.2009, 14:31
von Michael
Mit SimpleXML hat das nichts zu tun. Habe mal vor einiger Zeit ein ähnliches Problem gehabt und folgede Lösung gefunden. Ist nicht schön, aber sehr praktisch.

$xml = new SimpleXMLElement($content);
$array = object2array($xml);
foreach ($array['files.index']['file'] as $file)
{
echo $file["@attributes"]['Product_ID']. "<br>";

}

function object2array($object)
{
$return = NULL;
if(is_array($object))
{
foreach($object as $key => $value)
$return[$key] = object2array($value);
} else {
$var = get_object_vars($object);
if($var)
{
foreach($var as $key => $value)
$return[$key] = object2array($value);
} else {
return strval($object);
}
}
return $return;
}

Verfasst:
von

Verfasst: 28.09.2009, 14:43
von Graccem

Code: Alles auswählen

$xml = new SimpleXMLElement&#40;$content&#41;;
foreach &#40;$xml->&#123;'files.index'&#125;->file as $file&#41;
&#123;
   echo $file&#91;'Product_ID'&#93; . "<br>";
&#125;
Mehr braucht man nicht.

Verfasst: 28.09.2009, 14:55
von Lord Lommel
8)

Verfasst: 01.10.2009, 13:29
von smilla
Man lernt immer wieder dazu. Meine Notlösung war auch nicht ohne :)

Aber die neue mit {'files.index'} ist viel besser, spart auch das str_replace (Große Datei = viel Zeit) und funkioniert. Vielen Dank!