php - 如何使用命名空间获取属性的值

标签 php xml dom xpath

我想获取属性 的内容xsi:schemaLocation .它与 php 中的 getElementsByTagName(以及之后的 foreach)完美配合,但它很丑,对吧?

如何使用简单的 Xpath 查询获得相同的内容?

这是 xml 内容的简短示例:

<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0" creator="blabla" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd" xmlns="http://www.topografix.com/GPX/1/0">
...
</gpx>

谢谢!

最佳答案

通常,您需要首先向 XPath 库注册要使用的 namespace 。然后,您可以通过包含 namespace 前缀和名称来查询属性。

因此,让我们假设您正在使用 DOMXPath,您可能会注册以下命名空间:

$xpath = new DOMXPath($doc);
$xpath->registerNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");
$xpath->registerNamespace("gpx", "http://www.topografix.com/GPX/1/0");

然后您可以使用以下内容查询 schemaLocation 属性:
$xpath->query("/gpx:gpx/@xsi:schemaLocation",$doc);

关于php - 如何使用命名空间获取属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33779470/

相关文章:

phpBB远程文件上传

xml - XSLT - 将前一个兄弟的元素与当前的节点元素进行比较

javascript - 如何获取具有数据绑定(bind)属性的特定元素并立即调用(使用 now-active now)?

javascript - 使用 JavaScript 更改 <span> 元素的类

javascript - jQuery 父元素内部 HTML

php - 使用php从mysql数据库中选择特定内容

php - 是否可以在 group_concat 中使用 distinct + concat?

php - MYSQL 自动填充字段

xml - 返回 XML 元素的内容

c# - 使用 C#(或任何其他方法)将 XML 转换为 SQL Server 表