Nie można dodawać elementów do DOMNodeList za pośrednictwem numeru public interface. Jednak DOMNodeLists są żywe zbiory po podłączeniu do drzewa DOM, więc dodanie elementu podrzędnego do DOMElement doda element w kolekcji dziecięcej tego elementu (która jest DOMNodeList):
$doc = new DOMDocument();
$nodelist = $doc->childNodes; // a DOMNodeList
echo $nodelist->length; // 0
$elem = $doc->createElement('div');
$doc->appendChild($elem);
echo $nodelist->length; // 1
Mówisz, że chcesz dodać "kilka użytecznych metod zwracających dane jako DOMNodeList". W kontekście DOMDocument to robi to, co robi XPath. Pozwala na zapytanie wszystkich węzłów w dokumencie i zwrócenie ich w domenie DOMNodeList. Może tego właśnie szukasz.
Dziękuję za odpowiedź, rozwiązuje problem. Pracuję nad prototypem mini-biblioteki, która dodaje obsługę CSS do klasy DOMDocument. Wykonuje określone zadania, takie jak wyszukiwanie widocznego koloru tła obrazu z przezroczystością (poprzez dostęp do CSS elementu i węzłów nadrzędnych). Wypróbuję XPath, kiedy już znajdę porządny konwerter selektorów CSS na XPath. – optimizitor
@optimizitor zauważ, że istnieją już biblioteki innych firm, które już to mają. Zobacz http://stackoverflow.com/a/3577662/208809 – Gordon
Załóżmy, że 'DOMNode $ elem' jest pobierany z załadowanego HTML, czy istnieje sposób na zapisanie jego kontekstu (' parentNode', 'previousSibling',' nextSibling ')? Zmienia się po zastosowaniu 'DOMNode :: appendChild (DOMNode $ elem)'. – optimizitor