php - 循环xml的所有节点以获取贡献者
问题描述
我这里有一个包含作者列表的XML
...
<contributors>
<person_name contributor_role="author" sequence="first">
<given_name>John</given_name>
<surname>Doe</surname>
</person_name>
<person_name contributor_role="author" sequence="first">
<given_name>Micheal</given_name>
<surname>Bob</surname>
</person_name>
<person_name contributor_role="author" sequence="additional">
<given_name>Lyly</given_name>
<surname>Jane</surname>
</person_name>
<person_name contributor_role="author" sequence="additional">
<given_name>Tom</given_name>
<surname>Mark</surname>
</person_name>
</contributors>
...
我尝试使用下面的代码来获取所有作者的全名(名字和姓氏)但无法正常工作 - 显示由“;”分隔的空白值 因为我在我的代码中使用了。
$xml2 = simplexml_load_file($api_xml_url);
foreach($xml2 as $contributors =>$node) {
foreach($node as $person_name => $child) {
$authors = $child->given_name ." " .$child->surname ."; ";
echo $authors;
}
如何像 John Doe 一样按顺序显示所有作者;迈克尔·鲍勃;莉莉·简;汤姆马克
解决方案
基于您在此链接上提供的 XML:XML 文件
这是解决方案:
foreach($xml2->query_result->body->query->doi_record->crossref->journal->journal_article->contributors as $contributors) {
foreach($contributors as $person) {
$author = $person->given_name ." " .$person->surname ."; ";
echo $author;
}
}
测试并且工作正常。
推荐阅读
- cloud-foundry - 如何将 Flask-PyMongo 添加到 environment.yml?
- javascript - 在 Laravel 5.8 中使用引导模式窗口编辑数据
- sap-cloud-sdk - 无法为 http 目标设置自定义标头字段
- powershell - 程序运行错误。它不能加载两个xml文件?
- javascript - 使用 Javascript 计算数组中的重复值并返回带有附加值的计数
- json - 颠簸转换以仅保留元素数组
- python - 如何在日志中找到字符串的最后一个实例?
- python - 类型错误:传递给“ConcatV2”操作的“值”的列表中的张量具有不完全匹配的类型 [bool,float32]
- scala - 是否可以在 spark 中创建数据帧的数据集?
- asp.net - 在数据库和 LINQ 优化之后,Web 应用程序正在使 CPU 过载。我可以让 SQL Server 运行得更慢吗?