这似乎是一个很容易回答的问题,但我一直无法让它工作。我正在运行PHP 5.2.6。
当我使用$element->saveXML()时,我有一个DOM元素(根元素),它会输出一个xmlns属性:
然而,我无法在PHP程序中找到任何方法来查看该命名空间。我想要能够检查它是否存在以及它的设置是什么。
检查$document->documentElement->namespaceURI似乎是显而易见的答案,但那是空的(我从来没有能够使它非空)。是什么生成了输出中的xmlns值,我该如何读取它?
到目前为止,我唯一能够做到这一点的实用方法是一个完全的hack - 使用saveXML()将其保存为XML字符串,然后使用正则表达式读取其中内容。
编辑:
这可能是使用loadHTML()加载XML而不是loadXML(),然后使用saveXML()打印出来的特殊情况。当你这样做时,似乎由于某种原因,saveXML添加了一个xmlns属性,即使使用DOM方法也无法检测到此xmlns值是文档的一部分。这意味着如果我有一种检测传入文档是否已使用loadHTML()加载的方法,那么我可以用不同的方式解决这个问题。
当我使用$element->saveXML()时,我有一个DOM元素(根元素),它会输出一个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值,我该如何读取它?
到目前为止,我唯一能够做到这一点的实用方法是一个完全的hack - 使用saveXML()将其保存为XML字符串,然后使用正则表达式读取其中内容。
编辑:
这可能是使用loadHTML()加载XML而不是loadXML(),然后使用saveXML()打印出来的特殊情况。当你这样做时,似乎由于某种原因,saveXML添加了一个xmlns属性,即使使用DOM方法也无法检测到此xmlns值是文档的一部分。这意味着如果我有一种检测传入文档是否已使用loadHTML()加载的方法,那么我可以用不同的方式解决这个问题。