Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 809
<?=getUserTitle()?>
Heisann, sitter her og sliter med XML.

Her er XML delen jeg skal ha ut.

Kode

	<name>
		<colors>
			<hex>69D2E7</hex>
			<hex>A7DBD8</hex>
			<hex>E0E4CC</hex>
			<hex>F38630</hex>
			<hex>FA6900</hex>
		</colors>
	</name>
	<name>
		<colors>
			<hex>69D2E7</hex>
			<hex>A7DBD8</hex>
			<hex>E0E4CC</hex>
			<hex>F38630</hex>
			<hex>FA6900</hex>
		</colors>
	</name>
	<name>
		<colors>
			<hex>69D2E7</hex>
			<hex>A7DBD8</hex>
			<hex>E0E4CC</hex>
			<hex>F38630</hex>
			<hex>FA6900</hex>
		</colors>
	</name>
	<name>
		<colors>
			<hex>69D2E7</hex>
			<hex>A7DBD8</hex>
			<hex>E0E4CC</hex>
			<hex>F38630</hex>
			<hex>FA6900</hex>
		</colors>
	</name>
Og her er php scriptet

Kode

<?php
$xml = new SimpleXMLElement('name.xml', null, true);

foreach($xml as $data){
echo <<<EOF
	<h1 style="color:red;">{$data->colors->hex}</h1>
EOF;
}
?>
Det jeg ønsker å få til er å printe ut alle HEX kodene, men jeg får bare til å printe ut nr1 av dem, altså 69D2E7.
Noen som kan hjelpe meg?
EDIT (Dropp det under...): hex er et array. Du må lage en ny loop på hex-variabelen.

Nå er ikke jeg noen XML-guru, men det fungerer fint om jeg legger til et parent-element <names>.

Kode

<?php
$xmlstr = <<<XML
<names>
	<name> 
        <colors> 
            <hex>69D2E7</hex> 
            <hex>A7DBD8</hex> 
            <hex>E0E4CC</hex> 
            <hex>F38630</hex> 
            <hex>FA6900</hex> 
        </colors> 
    </name> 
    <name> 
        <colors> 
            <hex>69D2E7</hex> 
            <hex>A7DBD8</hex> 
            <hex>E0E4CC</hex> 
            <hex>F38630</hex> 
            <hex>FA6900</hex> 
        </colors> 
    </name> 
    <name> 
        <colors> 
            <hex>69D2E7</hex> 
            <hex>A7DBD8</hex> 
            <hex>E0E4CC</hex> 
            <hex>F38630</hex> 
            <hex>FA6900</hex> 
        </colors> 
    </name> 
    <name> 
        <colors> 
            <hex>69D2E7</hex> 
            <hex>A7DBD8</hex> 
            <hex>E0E4CC</hex> 
            <hex>F38630</hex> 
            <hex>FA6900</hex> 
        </colors> 
    </name>
</names>
XML;

$names = new SimpleXMLElement($xmlstr); 

foreach($names as $name) {
	echo '<pre>'.print_r($name, true).'</pre>';
}
?>
Sist endret av ma10as; 17. august 2012 kl. 22:01.
&lt;?=getUserTitle()?&gt;
Trådstarter
Fikk det til plutselig, er ikke sikker på hva jeg gjorde.
Men jeg brukte dette "$data->colors->hex[0]"
Med den koden får du vel bare ut den første hex-koden i hver gruppe? Om du ønsker alle (slik jeg forstod det), må du gjøre noe lignende dette:

Kode

<?php
foreach($xml as $data){ 
	foreach ($data->colors->hex as $hex) {
		echo '<h1 style="color:red;">'. $hex .'</h1>';
		// Semantisk riktig med så mange h1-tags?
	} 
}
?>
&lt;?=getUserTitle()?&gt;
Trådstarter
Sitat av ma10as Vis innlegg
Med den koden får du vel bare ut den første hex-koden i hver gruppe? Om du ønsker alle (slik jeg forstod det), må du gjøre noe lignende dette:

Kode

<?php
foreach($xml as $data){ 
	foreach ($data->colors->hex as $hex) {
		echo '<h1 style="color:red;">'. $hex .'</h1>';
		// Semantisk riktig med så mange h1-tags?
	} 
}
?>
Vis hele sitatet...
h1-taggene var bare under testingen.
Men her er php koden min:

Kode

<?php
$xml = new SimpleXMLElement('palettes.xml', null, true);
foreach($xml as $data){
	echo $data->colors->hex[0];
	echo $data->colors->hex[1];
	echo $data->colors->hex[2];
	echo $data->colors->hex[3];
	echo $data->colors->hex[4];
}
simplexml støtter XPath,da er det greit og ta ut alle HEX kodene som dette.

Kode

<?php
  $xml_data = simplexml_load_file('name.xml');
  foreach ($xml_data->xpath('//hex') as $hex_code){          
		  printf("%s\n", $hex_code);
  }   
?>
Sist endret av snippsat; 19. august 2012 kl. 01:17.