【发布时间】:2018-03-25 03:11:07
【问题描述】:
我有一个 xml 文件,我想解析这个 XML 文件中的作者列表。
<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>
我使用此代码获取具有Lastname 和Initial 的作者姓名,但我的代码仅获得了最后一位作者 (Xu J)。
$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;
如何 获取完整的作者列表(Goyette-Desjardins G;Auger JP;Xu J)。非常感谢
【问题讨论】:
-
不,要解析 xml 文件,您不必使用正则表达式或任何直接字符串方法。使用 XMLReader 或 DOMDocument。该文件已经结构化,请使用该结构。
标签: php xml parsing preg-match-all