Hoi,
ik ben mezelf aan het verdiepen in XML en Xpath via PHP. Als test heb ik hiervoor een XML bestand gemaakt dat de gegevens over diverse CD's bij kan houden.
Ik heb tot nu toe alles met loops en if-constructies gemaakt:
Nu kwam ik er via de PHP website achter dat er ook zoiets bestaat als XPath. Dit zou een taal zijn, om het xml bestand wat meer op een database-achtige manier te benaderen.
Nou ben ik hiermee aan het experimeteren om te kunnen zoeken in de CD's uit de xml!
Dit werkt wel, maar alleen als je zoekt op de exacte term. Denk bijvoorbeeld aan de volgende situatie:
Artiest = Jan Smit
Als je dan zoekt op Jan smit of Jan dan vind hij hem niet, terwijl Jan Smit wel werkt, xPath is dus hoofdletter gevoelig, en kan niet zoeken op partial-matches.
Is hier een oplossing voor?
alvast bedankt!
gr Sander
ik ben mezelf aan het verdiepen in XML en Xpath via PHP. Als test heb ik hiervoor een XML bestand gemaakt dat de gegevens over diverse CD's bij kan houden.
Ik heb tot nu toe alles met loops en if-constructies gemaakt:
PHP:
1
2
3
4
5
| <?php $xmlCds = $xml->getElementsByTagName("cd"); $ok = false; foreach ($xmlCds as $xmlCd) echo($xmlCd->getAttribute("titel")." - ".$xmlCd->getAttribute("titel")); ?> |
Nu kwam ik er via de PHP website achter dat er ook zoiets bestaat als XPath. Dit zou een taal zijn, om het xml bestand wat meer op een database-achtige manier te benaderen.
Nou ben ik hiermee aan het experimeteren om te kunnen zoeken in de CD's uit de xml!
PHP:
1
2
3
4
5
6
7
8
9
10
| $xml = new DOMDocument(); $xml->load("xml.xml"); $xpath = new DOMXPath($xml); $query = "/cds/cd[@*=".$_GET['zoek']."']"; $entries = $xpath->query($query); foreach ($entries as $entry) { $resultaat = $entry->nextSibling->previousSibling; echo "Gevonden".$resultaat->getAttribute('artiest')." - ".$resultaat->getAttribute('titel')."<br>"; } |
Dit werkt wel, maar alleen als je zoekt op de exacte term. Denk bijvoorbeeld aan de volgende situatie:
Artiest = Jan Smit
Als je dan zoekt op Jan smit of Jan dan vind hij hem niet, terwijl Jan Smit wel werkt, xPath is dus hoofdletter gevoelig, en kan niet zoeken op partial-matches.
Is hier een oplossing voor?
alvast bedankt!
gr Sander