php - 如何使用 PHP/XPath/DOM 查询 namespace

标签 php xml dom xpath namespaces

我正在尝试查询使用命名空间的 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/

相关文章:

javascript - 为什么 console.log 返回正确,但我的函数返回未定义?

java - JDom 是否有任何 org.w3c.dom 包装器?

php - MySQL 使并发 SELECT ... FOR UPDATE 查询失败而不是等待锁被释放

php - 101 connections to self 错误

php - 如何使用 codeigniter 在数组中添加一个参数

xml - 使用 perl XML::LibXML 解析 XML

php - PUT 方法不起作用(CodeIngiter + Codeigniter 休息服务器)

python - 如何在 django 模板中格式化 XMLtext

android - 在android中通过ant脚本更改应用程序名称

javascript - jQuery 给定 div 中每个元素的类