热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPRegisterXPathNamespace—未知来源的XML前缀-PHPRegisterXPathNamespace-XMLPrefixofUnknownOrigin

ImprettynewtoPHPXPathhere.ImusingSimpleXMLandXPathinPHP,traversingXMLwithnamespac

I'm pretty new to PHP/XPath here. I'm using SimpleXML and XPath in PHP, traversing XML with namespaces.

我对PHP/XPath非常熟悉。我在PHP中使用SimpleXML和XPath,使用名称空间遍历XML。

My question is concerning the 'prefix' parameter in the registerXPathNamespace function.
I have two xmlns in my xml feed; however, I'm uncertain as to how to use the function in this case.
When I run this code, I get the following error msg:

我的问题是关于registerXPathNamespace函数中的“前缀”参数。我的xml提要中有两个xmlns;但是,我不确定在这种情况下如何使用这个函数。当我运行这个代码时,我得到以下错误msg:

Undefined offset: 0

My XML cannot be changed in any way. Please see the code, below. Thanks for any leads.

我的XML不能以任何方式改变。请看下面的代码。谢谢你的任何线索。

PHP code:

PHP代码:

registerXPathNamespace('a','http://www.digitalmeasures.com/schema/data');//
//below, as the 'dmd' prefix is in the xml, I've included it here.
$simplexml->registerXPathNamespace('dmd','http://www.digitalmeasures.com/schema/data-metadata');
//

$myDataObjects2 = $simplexml->xpath('//Record/INTELLCONT[@id="14"]/CONTYPE')[0];
//$myDataObjects2 = $simplexml->xpath('//Record/INTELLCONT/CONTYPE')[0];
echo $myDataObjects2;
?>

The XML:

XML:


    
        
        
            Author Content
            
            Revised
            Accepted
        
    

2 个解决方案

#1


3  

You have registered namespace

你有注册名称空间

$simplexml->registerXPathNamespace('a','http://www.digitalmeasures.com/schema/data');

and you need to say xpath that nodes, you are looking up, belong to that namespace

你需要说xpath,你要查找的节点,属于那个命名空间

//a:Record/a:INTELLCONT[@id="14"]/a:CONTYPE

demo

演示

#2


2  

What you have is whats called a default namespace - xmlns="http://www.digitalmeasures.com/schema/data" and as a default it doesn't have a prefix in your XML - it's just assumed to be there.

您拥有的是所谓的默认名称空间——xmlns=“http://www.digitalmeasures.com/schema/data”,作为默认名称空间,它在XML中没有前缀——它只是假定在那里。

But in your code, you need to give it a name, so in your case you've given it a prefix of 'a'...

但是在你的代码中,你需要给它一个名字,所以在你的例子中,你给它一个前缀“a”。

$simplexml->registerXPathNamespace('a','http://www.digitalmeasures.com/schema/data');

So in your XPath, where the element in the original document does not have a prefix - it's using the default namespace, and in your code you have said that this should have a prefix of 'a'. So your XPath should be...

在XPath中,原始文档中的元素没有前缀——它使用的是默认的名称空间,在你的代码中,你已经说过这应该有“a”的前缀。XPath应该是。

$myDataObjects2 = $simplexml->xpath('//a:Record/a:INTELLCONT[@id="14"]/a:CONTYPE')[0];

推荐阅读
  • 【线段树】  本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • URL参数格式http:localhos:8080demo?ab&cd&ef匹配参数a对应的表达式为^a([^&]*)&匹配参数b对应的表达式为&b([^&]*)&匹配参数c对应 ... [详细]
  • 本文介绍了如何通过 AJAX 发送请求到后端控制器,并将返回的 JSON 数据解析后在前端页面上显示。具体步骤包括发送 AJAX 请求、解析 JSON 字符串和遍历数据。 ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 使用 Mui.js 获取复选框值的方法
    本文介绍如何使用 Mui.js 框架来获取复选框的值,并通过数组进行处理和展示。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
  • 本文介绍了 JSON Schema 和 XML Schema 的基本概念,并详细讲解了如何使用 AJV 进行 JSON 数据校验。通过具体的示例和扩展方法,帮助读者更好地理解和应用这些工具。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
author-avatar
广东工业大学普通话_333
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有