jch*_*mpo 18 php simplexml xml-namespaces
我有一个XML文档,如下所示:
<Data
xmlns="http://www.domain.com/schema/data"
xmlns:dmd="http://www.domain.com/schema/data-metadata"
>
<Something>...</Something>
</Data>
Run Code Online (Sandbox Code Playgroud)
我正在使用PHP中的SimpleXML解析信息.我正在处理数组,我似乎遇到了命名空间的问题.
我的问题是:如何删除这些名称空间?我从XML文件中读取数据.
谢谢!
nul*_*ull 16
如果您正在使用XPath,那么它是XPath的限制,而不是 PHP在xpath和默认命名空间上查看此解释以获取更多信息.
更具体地说,它是xmlns=""根节点中导致问题的属性.这意味着您需要注册命名空间,然后使用QName来引用元素.
$feed = simplexml_load_file('http://www.sitepoint.com/recent.rdf');
$feed->registerXPathNamespace("a", "http://www.domain.com/schema/data");
$result = $feed->xpath("a:Data/a:Something/...");
Run Code Online (Sandbox Code Playgroud)
要点:registerXPathNamespace调用中使用的URI 必须与实际XML文件中使用的URI 相同.
小智 14
我发现上面的答案很有帮助,但它对我来说并不适用.最终效果更好:
// Gets rid of all namespace definitions
$xml_string = preg_replace('/xmlns[^=]*="[^"]*"/i', '', $xml_string);
// Gets rid of all namespace references
$xml_string = preg_replace('/[a-zA-Z]+:([a-zA-Z]+[=>])/', '$1', $xml_string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22263 次 |
| 最近记录: |