如何使用php Xpath从XML中列出所有名称空间
但是没有输出简而言之,你没有。最重要的如何使用php Xpath从XML中列出所有名称空间,php,xpath,Php,Xpath,但是没有输出简而言之,你没有。最重要的xmlns:admin不是名称空间,而是别名/前缀。实际名称空间是用someval替换的值 SimpleXMLElement::getNamespaces()(来自您的注释)是一种仅用于调试的方法。您不应该从文档中读取名称空间前缀,它们只对当前上下文有效 $doc = new DOMDocument(); $context = $doc->documentElement; $xpath = new DOMXPath($doc); $xml = s
xmlns:admin
不是名称空间,而是别名/前缀。实际名称空间是用someval
替换的值
SimpleXMLElement::getNamespaces()
(来自您的注释)是一种仅用于调试的方法。您不应该从文档中读取名称空间前缀,它们只对当前上下文有效
$doc = new DOMDocument();
$context = $doc->documentElement;
$xpath = new DOMXPath($doc);
$xml = simplexml_load_file("path to xml");
foreach( $xpath->query('namespace::*', $context) as $node )
{
echo $node->nodeName;
}
任何元素节点上都允许使用名称空间定义,您可以为元素定义默认名称空间
因此,您可以使用实际的名称空间URI。将它们放入代码的变量/数组中。使用
SimpleXMLElement::registerXpathNamespace()
为命名空间(Xpath表达式)注册您自己的前缀 简单的回答是,你没有。最重要的xmlns:admin
不是名称空间,而是别名/前缀。实际名称空间是用someval
替换的值
SimpleXMLElement::getNamespaces()
(来自您的注释)是一种仅用于调试的方法。您不应该从文档中读取名称空间前缀,它们只对当前上下文有效
$doc = new DOMDocument();
$context = $doc->documentElement;
$xpath = new DOMXPath($doc);
$xml = simplexml_load_file("path to xml");
foreach( $xpath->query('namespace::*', $context) as $node )
{
echo $node->nodeName;
}
任何元素节点上都允许使用名称空间定义,您可以为元素定义默认名称空间
因此,您可以使用实际的名称空间URI。将它们放入代码的变量/数组中。使用
SimpleXMLElement::registerXpathNamespace()
为命名空间(Xpath表达式)注册您自己的前缀 也只有节点名或值?只声明名称空间的名称,如xmlns:system,xmlns:adminI在此处获得解决方案也只有节点名或值?只声明名称空间的名称,如xmlns:system,xmlns:adminI在此处获得解决方案
$xml = <<<'XML'
<foo:outer xmlns:foo="urn:foo">
<bar:inner xmlns:bar="urn:bar"/>
</foo:outer>
XML;
$outer = new SimpleXMLElement($xml);
var_dump(
$outer->getNamespaces()
);
var_dump(
$outer->children('urn:bar')->inner->getNamespaces()
);
array(1) {
["foo"]=>
string(7) "urn:foo"
}
array(1) {
["bar"]=>
string(7) "urn:bar"
}