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 ..
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>";
}