webForumDet fria alternativet

php/xml parser

5 svar · 365 visningar · startad av matthew

matthewMedlem sedan okt. 2001178 inlägg
#1

Hej

Jag undrar vart jag kan hitta en xml parser för php, jag kör windows 2000.

Har laddat hem några men de verkar vara för C.

Vet inte om frågan är rätt formulerad.

Nån som vill hjälpa ?

Matt

------------------
When we were wired the world was lika a secret

SPiNMedlem sedan mars 20005 832 inlägg
#2

Det finns ett par som du kan kompilera in i PHP, eller i ditt fall avmarkera i php.ini.

Men eftersom att du kör på en W2k-burk skulle jag nog använda mig av ett COM-objekt mot Microsofts XMLDOM som är en mycket bra parser.

Annars kan du kolla här också.

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

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

matthewMedlem sedan okt. 2001178 inlägg
#3

SPiN, Jag provade denna kod->
<?php
$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++;
}
}
?>

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

Warning: Undefined index: companyForetag in C:\Inetpub\wwwroot\php\xmlclass.php on line 8
Fatal error: Cannot instantiate non-existent class: parser in C:\Inetpub\wwwroot\php\xmlclass.php on line 14

Hur funkar HTTP_POST_VARS ?

Vad kan det vara för fel ?

/matt

------------------
When we were wired the world was lika a secret

ZreoXMedlem sedan juli 200159 inlägg
#4

Ditt problem ligger inte direkt i http_post_vars (som förresten är variebler som bestämt postats till sidan (dvs ej ex genom url:en)...

Ditt problem ligger snarare i att du inte har stöd för XML scriptet. Verkar ju sakna Parser klassen.

Jag har själv användt mig av en rätt hyffsad DOM modul till PHP, du behöver ställa in att du vill använda den som en "extension" i PHP:s ini fil.

Här är ett exempel du kan titta på: http://www.quickmess.com/kodarkivet/index.php?url=subcategory.php?katid=37

Jag skulle rekomendera dig att titta mer på Dokument Objekt Modellen eftersom den är rätt lätt att använda sig av.

------------------
Kodarkivet
----------------------
Kodarkivet

SPiNMedlem sedan mars 20005 832 inlägg
#5

Har du inkluderat filen där min klass ligger i ditt PHP-dokument? Verkar inte som det.

Du bör också ta bort alla <BR>-taggar i din XML-fil, då det är ogiltiga taggar... Varför har du lagt dit dom? :q

HTTP_POST_VARS[] är en global associativ array, läs mer i artikeln här. Alltså, de variabler som datan från ett formulär lagras i.

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

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

matthewMedlem sedan okt. 2001178 inlägg
#6

Tack för tipsen !!

Hade tagit bort <br> taggarna i xml filen.

Oj jag hade länkat parserclass filen fel !

Får nu detta fel->
Warning: Undefined variable: result in C:\Inetpub\wwwroot\php\parserclass.php on line 108
ERROR[Class: Parser] No data could be found in the node 'foretagslista>'

/matthew

------------------
When we were wired the world was lika a secret

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb