webForumDet fria alternativet

Söka i en/flera XML filer

PHP

4 svar · 278 visningar · startad av jonne

Medlem sedan jan. 20011 154 inlägg
Frågan#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?

------------------
If i want culture, I'll eat yogurt.

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.

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

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.

------------------
If i want culture, I'll eat yogurt.

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!

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

[Redigerat av SPiN den 30 okt 2001]

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

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)