如何用PHP从xml文件中获取所有行的列表
我有一个xml文件,我想解析这个xml文件中的作者列表如何用PHP从xml文件中获取所有行的列表,php,xml,parsing,preg-match-all,Php,Xml,Parsing,Preg Match All,我有一个xml文件,我想解析这个xml文件中的作者列表 <AuthorList CompleteYN="Y"> <Author ValidYN="Y"> <LastName>Goyette-Desjardins</LastName> <ForeName>Guillaume</ForeName>
<AuthorList CompleteYN="Y">
<Author ValidYN="Y">
<LastName>Goyette-Desjardins</LastName>
<ForeName>Guillaume</ForeName>
<Initials>G</Initials>
<AffiliationInfo>
<Affiliation>University 1.</Affiliation>
</AffiliationInfo>
</Author>
<Author ValidYN="Y">
<LastName>Auger</LastName>
<ForeName>Jean-Philippe</ForeName>
<Initials>JP</Initials>
<AffiliationInfo>
<Affiliation>University 2</Affiliation>
</AffiliationInfo>
</Author>
<Author ValidYN="Y">
<LastName>Xu</LastName>
<ForeName>Jianguo</ForeName>
<Initials>J</Initials>
<AffiliationInfo>
<Affiliation>University 3</Affiliation>
</AffiliationInfo>
</Author>
</AuthorList>
怎么
获取完整的作者列表(Goyette Desjardins G;Auger JP;Xu J)。非常感谢您不应该使用正则表达式来解析XML,而应该使用类似的方法
不,要解析xml文件,不必使用正则表达式或任何直接字符串方法。使用XMLReader或DOMDocument。文件已经结构化,请使用该结构。请注意,您可以使用
simplexml\u load\u file
功能,而不是file\u get\u contents
。谢谢@Lawrence,但我想将列表从foreach
中取出,我能做什么?谢谢你是说你想要一组$authors
?@NguyenHoangBach;将每个项目存储到一个数组中。有什么问题吗?谢谢大家,代码比治疗病人要复杂得多。(^^)
$api_xml_url = "https://example.com&pid=3123133213&retmode=xml";
$xml = file_get_contents($api_xml_url);
preg_match_all("'<LastName>(.*?)</LastName>'si", $xml, $match);
foreach($match[1] as $LastName) {
$LastName = strip_tags($LastName);
}
preg_match_all("'<Initials>(.*?)</Initials>'si", $xml, $match);
foreach($match[1] as $Initials) {
$Initials = strip_tags($Initials);
}
$authors = $LastName.$Initials;
<?php
$api_xml_url = "https://example.com&pid=3123133213&retmode=xml";
$string = file_get_contents($api_xml_url);
$xml = simplexml_load_string($string);
foreach ($xml as $item) {
echo $item->ForeName.' '.$item->LastName.' ('.$item->Initials.')'.PHP_EOL;
}
Guillaume Goyette-Desjardins (G)
Jean-Philippe Auger (JP)
Jianguo Xu (J)