我正在尝试查询使用命名空间的 XML 文档。我在没有命名空间的情况下使用 xpath 取得了成功,但没有命名空间的结果。这是我正在尝试的一个基本示例。我稍微压缩了一下,所以我的示例中可能存在一些小问题,可能会影响我的实际问题。
示例 XML:
<?xml version="1.0"?>
<sf:page>
<sf:section>
<sf:layout>
<sf:p>My Content</sf:p>
</sf:layout>
</sf:section>
</sf:page>
示例 PHP 代码:
<?php
$path = "index.xml";
$content = file_get_contents($path);
$dom = new DOMDocument($content);
$xpath = new DOMXPath($dom);
$xpath->registerNamespace('sf', "http://developer.apple.com/namespaces/sf");
$p = $xpath->query("//sf:p", $dom);
我的结果是“p”是一个“DOMNodeList Object ()”,它的长度是 0。任何帮助将不胜感激。
最佳答案
DOMDocument 构造函数不获取内容,而是获取版本和编码。 而不是:
$path = "index.xml";
$content = file_get_contents($path);
$dom = new DOMDocument($content);
试试这个:
$path = "index.xml";
$doc = new DOMDocument();
$doc->load($path);
关于php - 如何使用 PHP/XPath/DOM 查询 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2765098/