Dyl*_*lan 5 php attributes namespaces domdocument
我正在使用 DOMDocument 读取 XML (SVG),其中包含命名空间。我遍历所有节点的属性,但似乎无法获取根元素的“xmlns”类型属性。
XML 看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.1 "
viewBox="0,0 534,616"
...
>
Run Code Online (Sandbox Code Playgroud)
当我尝试类似这样的事情时:
$node= DOMDocument->documentElement;
foreach($node->attributes as $attribute) {
echo $attribute->nodeName."\n";
}
Run Code Online (Sandbox Code Playgroud)
我确实获得了“其他”属性,例如 id、viewBox 等,但没有获得 xlmns:dc 等。
有没有办法获得这些?
尝试用namespaceURI
该节点的命名空间 URI,如果未指定则为 NULL。
要获取根节点的默认命名空间URI,您可以使用
$dom->documentElement->namespaceURI;
Run Code Online (Sandbox Code Playgroud)
有关如何获取所有命名空间属性,请参阅链接副本中我的答案。
另一种方法是使用 XPath:
$xpath = new DOMXPath($dom);
foreach ($xpath->query('namespace::*', $context) as $node) {
echo $node->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4390 次 |
最近记录: |