Używam DOM extension do analizy pliku xml zawierającego xml namespaces. Wydaje mi się, że deklaracje przestrzeni nazw traktowane są jak każdy inny atrybut, ale moje testy się nie zgadzają. Mam dokument, który zaczyna się tak:PHP: pobranie wszystkich zadeklarowanych przestrzeni nazw DOMElement
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:prism="http://purl.org/rss/1.0/modules/prism/"
xmlns:admin="http://webns.net/mvcb/"
>
i kod testu tak:
$doc = new DOMDocument();
$doc->loadXml(file_get_contents('/home/soulmerge/tmp/rss1.0/recent.xml'));
$root = $doc->documentElement;
var_dump($root->tagName);
# prints 'string(7) "rdf:RDF"'
var_dump($root->attributes->item(0));
# prints 'NULL'
var_dump($root->getAttributeNode('xmlns'));
# prints 'object(DOMNameSpaceNode)#3 (0) {}'
więc pytania są:
- Czy ktoś wie, gdzie mogę znaleźć w dokumentacji z
DOMNameSpaceNode
? A search on php.net nie daje żadnych użytecznych wyników. - Jak wyodrębnić wszystkie deklaracje przestrzeni nazw z tego DOMElement?
Wielkie dzięki, to zdecydowanie działające rozwiązanie. Chyba będę musiał poczekać, aż dokumentacja php zostanie zaktualizowana, aby uzyskać właściwą implementację. – soulmerge