【发布时间】:2010-08-25 13:58:26
【问题描述】:
这听起来像是一个很容易回答的问题,但我无法让它发挥作用。我正在运行 PHP 5.2.6。
我有一个 DOM 元素(根元素),当我转到 $element->saveXML() 时,它会输出一个 xmlns 属性:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
...
但是,我在 PHP 中找不到任何以编程方式查看该命名空间的方法。我希望能够检查它是否存在以及它的设置。
检查$document->documentElement->namespaceURI 将是显而易见的答案,但它是空的(我实际上从来没有能够让它非空)。是什么在输出中生成了该 xmlns 值,我该如何读取它?
到目前为止,我能够做到这一点的唯一实用方法是完全破解 - 使用 saveXML() 将其保存为 XML 到字符串,然后使用正则表达式读取该字符串。
编辑:
这可能是使用 loadHTML() 而不是 loadXML() 加载 XML,然后使用 saveXML() 打印出来的特性。当您这样做时,似乎出于某种原因 saveXML 添加了一个 xmlns 属性,即使使用 DOM 方法无法检测到此 xmlns 值是文档的一部分。我猜这意味着如果我有办法检测传入的文档是否已使用 loadHTML() 加载,那么我可以用不同的方式解决这个问题。
【问题讨论】:
标签: php dom domdocument xml-namespaces