我在一次性删除所有 ns-uri 的默认 NS 属性方面遇到了一些困难,以下方法将起作用...首先删除 documentElement 命名空间,然后使用 getElementsByTagNameNS() - 文档应该反映第二个参数实际上是标签的名称,而不是我最初期望的本地命名空间前缀
<?php
function strip_default_ns( $xml = null, $ns_uri = 'http://example.com/XML-Foo' ) {
$ns_local = '';
$ns_tag = '*';
if ( empty($xml) ) return false;
//删除文档命名空间
$dom = new DOMDocument();
$dom->loadXML($xml);
$dom->documentElement->removeAttributeNS($ns_uri, $ns_local);
//删除元素命名空间
foreach ( $dom->getElementsByTagNameNS($ns_uri, $ns_tag) as $elem ) {
$elem->removeAttributeNS($ns_uri, $ns_local);
}
return $dom->saveXML();
}
$stripped_xml = strip_default_ns($the_xml);
?>
现在,$stripped_xml 可以利用对 NULL 命名空间运行 XPath 查询。