webForumDet fria alternativet

php och xml

17 svar · 729 visningar · startad av icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#1

Jag kan inget om PHP :o så svara på detta inlägg precis så som ni ville ha svaret i början på eran PHP karriär ;)

Kan jag med PHP leta igenom en mapp med olika filer?

Om ja:
Skulle jag då kunna få se ett exempel på hur det skulle se ut.

mvh icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#2

Det skulle i ASP lösas med:

[red]
object.FileExists(file)
[/red]

mvh icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#3

Strunta i ovanstående fråga.....jag löser det på annat sätt istället......

mvh icaaq

jarvkloMedlem sedan juli 20013 378 inlägg
#4

Hmm..
Då blir det härt lite bonus då ;)

Ja det går.

I manualen finns även exempelkod som verkar göra något i stil med det du är ute efter...

icaaqMedlem sedan okt. 20005 273 inlägg
#5

Jag återtupplivar denna tråd då rubriken stämmer överens med denna fråga.Jag har denna xml-fil:

[red]
<?xml version="1.0" encoding="utf-8" ?>
<master>
	<mast artikelnummer="7772030" url="/parkstolpar_varm.html" />
	<mast artikelnummer="7772031" url="/parkstolpar_kall.html" />
</master>[/red]

Och frågan lyder: Hur kan jag först och främst ta reda på om artikelnr finns i denna xml-fil? Finns artikelnr vill jag få ut det artikelnummrets url.

Nån som känner sig manad att hjälpa en nybörjare inom PHP?

mvh icaaq

SPiNMedlem sedan mars 20007 896 inlägg
#6

Hur läser du dina XML-filer? Expat eller DOM, eller något annat?

icaaqMedlem sedan okt. 20005 273 inlägg
#7

Jag hittade ett exempel på PHPportalen, som såg ganska lätt ut.
http://www.phpportalen.net/moduler.php?modul=artikel&id=22

Jag tänkte använda den.....eller har du nån annan lösning som är lättare?

mvh icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#8

Jag har kommit en bit ....en väldigt liten bit men ändock en bit, frågan lyder nu

[red]:

function parseXML() {

global $XML_data;

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "elementData");
xml_parse($xml_parser, $XML_data);
xml_parser_free($xml_parser);
}
[/red]

Hur får jag in min XML-fil i $XML_data ?

mvh icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#9

JAg hoppar mellan exemplena.....och har nu hittat xmlize() istället men jag får det inte att fungera xmlize() ser ut så här

function xmlize($data) {

    $data = trim($data);
    $vals = $index = $array = array();
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $vals, $index);
    xml_parser_free($parser);

    $i = 0; 

    $tagname = $vals[$i]['tag'];
    if ( isset ($vals[$i]['attributes'] ) )
    {
        $array[$tagname]['@'] = $vals[$i]['attributes'];
    } else {
        $array[$tagname]['@'] = array();
    }

    $array[$tagname]["#"] = xml_depth($vals, $i);

    return $array;
}

och jag försöker anropa den så här:

$file = "mast.xml";
'här nedanför kommer felet
$master xmlize($file);

men jag får:

Parse error: parse error in /docs/phptest/topp.php on line 161

hur ska jag göra?

för mer info om xmlize kolla här
http://www.hansanderson.com/php/xml/

mvh icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#10

Är detta ett helt omöjligt problem eller är det ett alldeles för lätt problem?

mvh icaa

jarvkloMedlem sedan juli 20013 378 inlägg
#11

Det är inte omöjligt, men det kräver lite eftertanke och en del kod...
Hav tålamod - någon kommer säkert ha tid att hjälpa dig inom snart!

jarvkloMedlem sedan juli 20013 378 inlägg
#12

Här är en grundkod som kan användas för att ta reda på svaret till

Hur kan jag först och främst ta reda på om artikelnr finns i denna xml-fil? Finns artikelnr vill jag få ut det artikelnummrets url.

Vassego!
(antar data enligt http://www.webforum.nu/showthread.php?s=&postid=539451#post539451 )

<?php
function startElement($parser, $name, $attrs=''){
    global $artikelnummer,$current_tag;
    $current_tag=$name;
    switch($name){
        case 'MAST':
		 	$artikelnummer[$attrs['ARTIKELNUMMER']]=$attrs['URL'];
        break;
        default:
        break;
    }
}
function endElement($parser, $name, $attrs=''){
    global $current_tag;
    switch($name){
        default:
        break;
    }
}

function characterData($parser, $data){
    global $current_tag; 
    switch($current_tag){
    default:
        break;
    }
}

$xml_file = 'mast.xml'; // Du kan använda en URL här om du vill (och om din PHP-konfiguration tillåter;) 
$type = 'UTF-8';
$xml_parser = xml_parser_create($type);
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_set_element_handler($xml_parser, 'startElement','endElement');
xml_set_character_data_handler($xml_parser, 'characterData');

if (!($fp = fopen($xml_file, 'r'))) {
    die("Could not open $xml_file for parsing!\n");
}

$current_index=0;
while ($data = fread($fp, 4096)) {
    if (!($data = utf8_encode($data))) {
        echo 'ERROR'."\n";
    }
	if (!xml_parse($xml_parser, $data, feof($fp))) {
  		die("XML error".xml_error_string(xml_get_error_code($xml_parser)));
	}
}
xml_parser_free($xml_parser);

 
// Nu har du lagrat all info i array:en $artikelnummer.
// $artikelnummer[ett_nummer] = en_url

// Alla data i filen:
echo '<table border="1">';
foreach ( $artikelnummer as $key => $value ) {
	echo "<tr>";
	echo "<td>$key</td>";
	echo "<td>$value</td>";
	echo "</tr>\n";
}
echo'</table><hr>';

// Och ta reda på om ett visst artikelnummer finns:
$detduvillha = '7772031' ;
if ($artikelnummer[$detduvillha]) {
	echo "$detduvillha".' = "'."$artikelnummer[$detduvillha]".'"';
}
?>
jarvkloMedlem sedan juli 20013 378 inlägg
#13

Jag är en slarvpelle - men *nu* stämmer koden iallafall :OO

icaaqMedlem sedan okt. 20005 273 inlägg
#14

jag får
XML errornot well-formed (invalid token)
nu ser koden ut så här:
http://member.webforum.nu/1029/test2.txt

mvh icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#15

Det var min XML som f[rr sig en snyting...nu funkar det.....

jarvkloMedlem sedan juli 20013 378 inlägg
#16

[redigerad]
Jaha - du hade löst problemet medan jag skrev att det nog var XML-filen på mitt som vanligt ganska omständiga vis :e :birp

icaaqMedlem sedan okt. 20005 273 inlägg
#17

Jag har ett litet problem bara, hur göra jag för att include:a URL:en?
på denna sektion menar jag:

$detduvillha = '7772031' ;

if ($artikelnummer[$detduvillha]) {

//här vill jag include:a $detduvillhas URL    
echo "$detduvillha".' = "'."$artikelnummer[$detduvillha]".'"';

}

mvh icaaq

jarvkloMedlem sedan juli 20013 378 inlägg
249 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
246 ms — hämta tråd, inlägg och bilagor (db)