如何使用PHP / XPath / DOM查询名称空间

我试图查询使用命名空间的
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对象()”,它的长度是0.任何帮助将不胜感激.

最佳答案 DOMDocument构造函数不接受内容,而是版本和编码.

代替:

$path = "index.xml";
$content = file_get_contents($path);
$dom = new DOMDocument($content);

试试这个:

$path = "index.xml";
$doc = new DOMDocument();
$doc->load($path);
点赞