Söka i en/flera XML filer

PHP

4 svar · 281 visningar · startad av jonne

Medlem sedan jan. 20011 154 inlägg
Trådstart#1

Någon som har en bra tutorial eller vet hur man går till väga om man vill bygga upp en sökmotor som ska söka igenom en eller flera XML filer?

Medlem sedan mars 20007 896 inlägg
#2

Vad ska du köra på för plattform? Är det en Windows maskin skulle jag använda mig av Microsoft XMLDOM genom ett COM-objekt, även om det skulle gå segt. Orsaken är att PHP och XML, vad jag har märkt, inte är speciellt väl utbyggt. Det finns ett par parsers för XML i PHP, men ingen inbyggd eller avancerad.

Jag har inte sett några tutorials heller, men du kan alltid kolla på www.phpbuilder.com om dom har någon artikel.

Medlem sedan jan. 20011 154 inlägg
#3

Ska köra det på en linux maskin. Hittade lite om php och xml på phpbuilder och melonfire men dock inget om hur man gör för att söka i dem.

Medlem sedan mars 20007 896 inlägg
#4

I våras skrev jag ihop en XML Parser-klass, men jag har glömt bort om den fungerade bra, om den fungerade övehuvudtaget, osv.

Du kan ju alltid testa den, har lagt upp den här.

Jag hittade också ett gammalt script, där jag använde mig av den, och det ser ut något så här:

$foretag = $HTTP_POST_VARS['companyForetag'];
$land = $HTTP_POST_VARS['companyLand'];
$stad = $HTTP_POST_VARS['companyStad'];

$cntForetag = 0;
$cntLand = 0;
$cntStad = 0;

$xml = new Parser("foretag.xml");
$rot = $xml->getRoot();
$kids = $xml->getChildren($rot);

while($nodes = array_shift($kids)) {
	if($foretag != "" && $xml->getContent($nodes, "namn") == $foretag) {
		$arrForetag[$cntForetag]["foretagsnamn"] = $foretag;
		$arrForetag[$cntForetag]["adress"] = $xml->getContent($nodes, "gatuadress") . ", " . $xml->getContent($nodes, "postadress");
		$arrForetag[$cntForetag]["land"] = $xml->getContent($nodes, "land");
		$arrForetag[$cntForetag]["telefonnummer"] = $xml->getContent($nodes, "telefonnummer");
		$arrForetag[$cntForetag]["omraden"] = $xml->getContent($nodes, "omraden");
		$arrForetag[$cntForetag]["person"] = $xml->getContent($nodes, "kontaktperson");
		$email = $xml->getAttributeContent($nodes, "email");
		$arrForetag[$cntForetag]["email"] = $email[0];

		$cntForetag++;
	}
}

Varför glömmer man, eller egentligen skiter i, att dokumentera sina klasser/funktioner? Man kan väl ivf kommentera dom, så att man vet vad dom gör... ;)
Man glömmer ju så jäkla snabbt annars, då man inte använder dem. :l :)

Hur som helst, hoppas du får användning av klassen!

Lycka till!

Medlem sedan mars 20007 896 inlägg
#5

Kom på att det kan vara bra att visa hur min XML-fil var uppbyggd också...

foretag.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="foretag.xsl" type="text/xsl"?>
<foretagslista>
<foretag>
<namn>Ett_företag</namn>
<gatuadress>Företagsgatan 6</gatuadress>
<postadress>123 45 Företagarberg</postadress>
<land>Företagaristan</land>
<telefonnummer>000-123123</telefonnummer>
<omraden>IT_Nätverk, IT_Programmering, IT_Webdesign, IT_Mjukvarutillverkning</omraden>
<kontaktperson email="personen@foretaget.se">Personen</kontaktperson>
</foretag>
</foretagslista>

Bara så du vet :e

387 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
133 ms — deklarationer (db)
128 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)