To brzmi jak dość łatwe pytanie, ale nie udało mi się go uruchomić. Używam PHP 5.2.6.Jak mogę znaleźć przestrzeń nazw elementu w PHP DOM?
Mam elementu DOM (element główny), który, gdy idę do $ element-> saveXML() wyprowadza atrybut xmlns:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
...
Jednak nie mogę znaleźć żadnego sposobu programowo zasięgu PHP, aby zobaczyć tę przestrzeń nazw. Chcę móc sprawdzić, czy istnieje i do czego służy.
Sprawdzanie $document->documentElement->namespaceURI
byłoby oczywistą odpowiedzią, ale jest ona pusta (nigdy nie byłem w stanie sprawić, że nie będzie pusta). Co generuje ta wartość xmlns na wyjściu i jak mogę ją odczytać?
Jedyny praktyczny sposób, w jaki udało mi się to zrobić do tej pory, to kompletny hack - zapisując go jako XML do napisu przy użyciu saveXML(), a następnie odczytując go za pomocą wyrażeń regularnych.
Edit:
To może być osobliwością ładowania XML w użyciu loadHTML() zamiast loadXML(), a następnie drukowanie z wykorzystaniem saveXML(). Kiedy to zrobisz, wydaje się, że z jakiegoś powodu saveXML dodaje atrybut xmlns, nawet jeśli nie ma sposobu, aby wykryć, że ta wartość xmlns jest częścią dokumentu przy użyciu metod DOM. Który, jak sądzę, oznacza, że gdybym miał sposób wykrycia, czy dokument przekazany został załadowany przy użyciu metody loadHTML(), to mógłbym rozwiązać to w inny sposób.
bardzo ładne i szczegółowe, nie wiedział o nodeTypes w zależności od metody parsowania, ale ma sens – edorian
Dzięki za podpowiedź o nodetypes i możliwość korzystania z xpath - rozwiązuje wiele moich problemów! – thomasrutter