Archief - [PHP]: DOMDocument resultaat zonder XPath

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Jerre Muesli

Legacy Member
Ik krijg volgend voorbeeld xml file binnen en van elk info element wil ik de waarden binnen de tags van key A en G
om nadien te gebruiken voor een selection box.
Kan ik dit doen zonder gebruik te moeten maken van xpath?
Momenteel doe ik het zo maar het lijkt me véél te lang om dit resultaat te bekomen ..

PHP:
<DUMP>
    <INFO key="0" name="test1">
        <SYMBOL key="A">info</SYMBOL>
        <TEXT key="B">info</TEXT>
        <TEXT key="C"/>
        <TRUTH-VALUE key="D">info</TRUTH-VALUE>
        <SEQUENCE key="E"/>
        <STRUCTURE key="F"/>
        <TEXT key="G">info</TEXT>
    </INFO>
    <INFO key="1" name="test2">
        <SYMBOL key="A">info</SYMBOL>
        <TEXT key="B">info</TEXT>
        <TEXT key="C"/>
        <TRUTH-VALUE key="D">info</TRUTH-VALUE>
        <SEQUENCE key="E"/>
        <STRUCTURE key="F"/>
        <TEXT key="G">info</TEXT>
    </INFO>
    ...
</DUMP>

//XML in DOMDocument
$dom = new DomDocument;
$dom->preserveWhiteSpace = false;
$dom->loadXML($response);

// Xpath Query's	
$queryA = '/DUMP/INFO/SYMBOL[@key="A"]';
$queryG = '/DUMP/INFO/TEXT[@key="G"]';

$xPath = new DOMXPath($dom);
// lijst van alle elementen van key A
$idValues = $xPath->query($queryA);
// lijst van alle elementen van key G
$descrText = $xPath->query($queryG);

// loop deze beiden en plaats ze in 1 array bij mekaar in paar
$arrayOptions = array();
$i = $j = 0;
foreach ($idValues as $value) 
{
	$arrayOptions[$i++]['value'] = $value->nodeValue;
}
foreach ($descrText as $text) 
{
	$arrayOptions[$j++]['text'] = $text->nodeValue;
}

// maak options string
$optionList = "";
foreach ($arrayOptions as $option)
{
	$optionList .= "<option value='".$option['value']."'>".$option['text']."</option>";
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan