gpt4 book ai didi

PHP RegisterXPathNamespace - 来源不明的 XML 前缀

转载 作者:行者123 更新时间:2023-12-02 03:42:54 36 4
gpt4 key购买 nike

我对 PHP/XPath 还很陌生。我在 PHP 中使用 SimpleXML 和 XPath,通过 namespace 遍历 XML。

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

Undefined offset: 0

我的 XML 无法以任何方式更改。请参阅下面的代码。感谢您提供任何线索。

PHP 代码:

<?php
$url = 'test.xml';

$simplexml = simplexml_load_file($url);
//below, I'm uncertain as to what should be the prefix,
//in the case of no apparent prefix in the xml - I've seen 'a' in other
//examples (where the prefix does not exist in the xml), but unsure why.
$simplexml->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;
?>

XML:

<Data xmlns="http://www.digitalmeasures.com/schema/data" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata" dmd:date="2018-01-03">
<Record userId="148" username="john-doe" termId="44" dmd:surveyId="12">
<dmd:IndexEntry indexKey="DEPARTMENT" entryKey="Toocas-CK" text="Toocas-CK"/>
<INTELLCONT id="14" dmd:originalSource="MANUAL" dmd:lastModified="2017-02-21T15:21:45" dmd:startDate="2016-05-01" dmd:endDate="2016-07-31">
<CONTYPE>Author Content</CONTYPE>
<CONTYPEOTHER/>
<NEWREV>Revised</NEWREV>
<STATUS>Accepted</STATUS>
</INTELLCONT>
</Record>
</Data>

最佳答案

您已注册命名空间

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

并且您需要说 xpath 您正在查找的节点属于该 namespace

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

demo

关于PHP RegisterXPathNamespace - 来源不明的 XML 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176542/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com