Как использовать foreach с PHP и XML - PullRequest
2 голосов
/ 20 сентября 2019

Это мой php-код

$xmldata = simplexml_load_string($ops_response);

foreach($xmldata->world-patent-data->biblio-search->search-result->exchange-documents->exchange-document->bibliographic-data->parties as $item)
{
echo "<p>Applicant Name: " . $item->applicants->applicant->applicant-name->name . "</p>";
echo "<p>Doc Number: " . $item->applicants->applicant->applicant-name->doc-number . "</p>";
echo "<p>Description: " . $item->applicants->applicant->applicant-name->abstract . "</p>";
}

Это мой XML-файл:

https://ipappatent.com/xml/document.xml

Ожидаемый результат

 <p>Applicant Name: PHYLION BATTERY CO LTD</p>
 <p>Doc Number: 2018101613</p>
 <p>Description: A frame tube having a battery enclosure structure for an electric bike. The frame tube comprises a main body</p>


 <p>Year: ASTRO ENGINEERING CO LTD [TW]</p>
 <p>Category: 20180821</p>
 <p>Country: A drive assemblage is described for a vehicle drivable by muscle energy and/or—in particular additionally—by motor energy</p>

Я новичок в PHP, и яне очень хорошо знаете, как обрабатывать вывод XML?Если кто-нибудь может помочь мне в этом, пожалуйста, сделайте это.Ценю вашу помощь.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Делай как это.У вас есть объект вместо массива.JSON декодировать и кодировать simplexml_load_string($ops_response).

$string = str_replace('&', '&amp;', $ops_response);
            // $string = str_replace('<', '&lt;', $ops_response);
            $string = str_replace("ops:", "", $string);

    echo "<pre>";
            $json = json_decode(json_encode((array) simplexml_load_string($string)), 1);

    print_r($json);
    $json = $json['biblio-search']['search-result']['exchange-documents'];
    foreach($json as $item)
                {
                echo "<p>Applicant Name: " . $item['exchange-document']['bibliographic-data']['parties']['applicants']['applicant'][0]['applicant-name']['name'] . "</p>";

echo "<p>Description: " . $item['exchange-document']['abstract']['@attributes']['lang'] . "</p>";
               }
0 голосов
/ 20 сентября 2019
libxml_use_internal_errors(true);
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<document>
  <user>John Doe</wronguser>
  <email>john@example.com</wrongemail>
</document>";

$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    print_r($xml);
}
?>

привет, попробуй вот так

...