Зацикливание всех узлов xml для получения участников - PullRequest
0 голосов
/ 03 марта 2019

У меня есть 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;
    }

Как показать всех авторов в такой последовательности, как Джон Доу;Майкл Боб;Лили Джейн;Том Марк

1 Ответ

0 голосов
/ 03 марта 2019

На основе XML, предоставленного вами по этой ссылке: XML File

Вот решение:

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;
   }
}

Протестировано и отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...