Ik maak gebruik van een PHP wrapper om de klasse DOMDocument heen om mijn HTML te genereren. Dit biedt een aantal voordelen omdat de HTML makkelijk te manipuleren is.
Een voorbeeld is het aanmaken van een element #1, het toevoegen aan element #2 en het element #1 alsnog te wijzigen.
Ik loop echter tegen het probleem aan dat het niet meer werkt als je:
- element #1 toevoegt aan element #2
- element #2 toevoegt aan element #3.
Element #1 is niet meer te wijzigen terwijl het wijzigen van element #2 en #3 gewoon werkt.
Hierbij is de meest simpele testcase die ik kon maken:
$el1 wijst niet meer dat het element dat in de DOM van $el3 zit, echter de verwijziging van $el2 is nog intact. Suggesties om de $el1 verwijziging te fixen?
Een voorbeeld is het aanmaken van een element #1, het toevoegen aan element #2 en het element #1 alsnog te wijzigen.
Ik loop echter tegen het probleem aan dat het niet meer werkt als je:
- element #1 toevoegt aan element #2
- element #2 toevoegt aan element #3.
Element #1 is niet meer te wijzigen terwijl het wijzigen van element #2 en #3 gewoon werkt.
Hierbij is de meest simpele testcase die ik kon maken:
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
| $doc1 = new DOMDocument(); $el1 = $doc1->createElement('h1', 'Hello'); $doc1->appendChild($el1); $doc2 = new DOMDocument(); $el2 = $doc2->createElement('h2', 'World'); $doc2->appendChild($el2); $doc3 = new DOMDocument(); $el3 = $doc3->createElement('h3', 'Today'); $doc3->appendChild($el3); // Import el1 into el2 $el1 = $doc2->importNode($el1, true); $el2->appendChild( $el1 ); $doc1 = $doc2; // Import el2 into el3 $el2 = $doc3->importNode($el2, true); //$el1 = $doc3->importNode($el1, true); Necessary? $el3->appendChild($el2); $doc2 = $doc3; // Modify el1 $el1->nodeValue = "Boo"; // This doesn't work? //$el2->nodeValue = "Boo"; // Changing element2 or 3 works... // Display result echo $doc3->saveHTML(); |
$el1 wijst niet meer dat het element dat in de DOM van $el3 zit, echter de verwijziging van $el2 is nog intact. Suggesties om de $el1 verwijziging te fixen?