gpt4 book ai didi

php - php xpath xml解析循环仅显示第一个条目

转载 作者:行者123 更新时间:2023-12-03 17:15:40 24 4
gpt4 key购买 nike

我对php simplexml xpath有一个愚蠢的问题,我不了解。

xml结构:

<tv>
<programme start="zeitbla" stop="zeitbla2" channel="19">
<title>erstertitelbla</title>
<desc>blablabeschreibung</desc>
<category lang="ja_JP">情報</category>
<category lang="en">information</category>
</programme>
<programme start="zeitbla" stop="zeitbla2" channel="19">
<title>zweitertitelbla</title>
<desc>blablabeschreibung</desc>
<category lang="ja_JP">ニュース・報道</category>
<category lang="en">news</category>
</programme>
</tv>


php代码:

$domtemp = new domDocument;
$domtemp->load("file.xml");
$fullfile = simplexml_import_dom($domtemp);

foreach($fullfile->programme as $program){
$category = $program->xpath('//category[@lang="en"]');
echo $category[0]."\n";
}


我的问题是:

为什么在每个循环遍历中仅从第一项中获得类别?

输出:

information

information

编辑:

我已经解决了这个问题:

$domtemp = new domDocument;
$domtemp->load("file.xml");
$fullfile = simplexml_import_dom($domtemp);
foreach($sxe->programme as $program){
$program = simplexml_load_string($program->asXML());
$category = $program->xpath('//category[@lang="en"]');
echo "{$category[0]}\n";


但我仍然想知道为什么这没有按我预期的那样工作。

问候

BluBb_mADe

最佳答案

基于@hakre's comment,我对答案做了一些调整,因此您所要做的就是对XPath查询进行小的更改:

category[@lang="en"]


代替

//category[@lang="en"]


因为这样,您将能够将每个 programme节点维护为查询上下文,而不是像以前一样维护整个XML文档。我创建了 an example in codepad,您可以在其中看到它的全部功能:

<?php
$xml = <<<XML
<tv>
<programme start="zeitbla" stop="zeitbla2" channel="19">
<title>erstertitelbla</title>
<desc>blablabeschreibung</desc>
<category lang="ja_JP">情報</category>
<category lang="en">information</category>
</programme>
<programme start="zeitbla" stop="zeitbla2" channel="19">
<title>zweitertitelbla</title>
<desc>blablabeschreibung</desc>
<category lang="ja_JP">ニュース・報道</category>
<category lang="en">news</category>
</programme>
</tv>
XML;

$sxe = new SimpleXMLElement($xml);

foreach($sxe->programme as $program){
$category = $program->xpath('category[@lang="en"]');
echo "{$category[0]}\n";
}


输出:

information
news


附带说明,您可以使用 simplexml_load_file function而不是加载 DOMDocument,然后将其导入到 SimpleXMLElement

关于php - php xpath xml解析循环仅显示第一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754182/

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