Ik heb een script wat zonder foutmeldingen draait, maar niet doet wat het zou moeten doen. Ik wil de waarde van een node veranderen, door de HTML tags te verwijderen. Het attribute 'nodeValue' is niet readonly, en zou dus gewijzigd moeten kunnen worden. Dat werkt, maar het verschijnt niet in het DOMDocument ->saveXML(); Ik heb al geprobeerd met references enzo, geen resultaat. Iemand een idee hoe ik dit klaar ga spelen?
Mijn code
Wat doe ik fout? Direct de variable van de foreach aanroepen wou ook niet.
Edit: Ik heb het idee dat DOMDocument-class zelf de entities weer naar gewone tekens rendered, kan dat het zijn?
Mijn code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| $oDom = new DOMDocument('1.0','utf-8'); $oDom->substituteEntities = true; $oDom->resolveExternals = false; $oDom->preserveWhitespace = false; $oDom->formatOutput = true; $oDom->load($sPathDir.$file); $oXPath = new DOMXPath($oDom); $oDesc = $oXPath->query('//description'); foreach ($oDesc as $iInd => $nDesc) { if (($sContent = str2XML(strip_tags($nDesc->nodeValue))) != $nDesc->nodeValue) { echo $sContent; // Nieuwe waarde zonder html-tags findNode($oDom->documentElement, $oDesc->item($iInd))->nodeValue = $sContent; echo $oDom->saveXML(); // Oude waarde inclusief html-tags } } // ### funcion: findNode ( /Startnode/, /Node to find/ ) function findNode(&$oNode, &$oSearch) { if ($oNode->isSameNode($oSearch)) return $oNode; $oChild = $oNode->firstChild; while ($oChild = $oChild->nextSibling) { if ($oFound =& findNode($oChild, $oSearch)) return $oFound; } } |
Wat doe ik fout? Direct de variable van de foreach aanroepen wou ook niet.
edit:
Zoals te zien zitten er al wat vreemde workarounds in bijv $sContent
Zoals te zien zitten er al wat vreemde workarounds in bijv $sContent
Edit: Ik heb het idee dat DOMDocument-class zelf de entities weer naar gewone tekens rendered, kan dat het zijn?
[ Voor 9% gewijzigd door r0bert op 22-11-2007 13:28 ]