Как решить PHP Предупреждение: SimpleXMLElement :: __ construct (): Entity: строка 4: ошибка синтаксического анализатора - PullRequest
1 голос
/ 02 мая 2020

Это мой первый опыт анализа файла xml с php. Я получаю следующую ошибку при попытке напечатать результаты.

[02-May-2020 08:24:13 UTC] PHP Предупреждение: SimpleXMLElement :: __ construct (): Entity: строка 4: ошибка синтаксического анализатора : Ожидается начальный тег, '<' не найден в .... / xml. php в строке 62 </p>

<?php

$myXML = '<?xml version="1.0" encoding="UTF-8"?>
<ici-import xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://journals.site.com/ic-import.xsd">
  <journal issn="xxx-xxx"/>
  <issue number="2" volume="1" year="2019" publicationDate="2019-12-08T11:19:14Z" numberOfArticles="2">
    <article>
      <type>ORIGINAL_ARTICLE</type>
      <languageVersion language="en">
        <title>First Title</title>
        <abstract>test</abstract>
        <pdfFileUrl>http://test.com/download/40</pdfFileUrl>
        <publicationDate>2019-12-08T00:00:00Z</publicationDate>
        <pageFrom>17</pageFrom>
        <pageTo>37</pageTo>
        <doi/>
        <keywords>
          <keyword>test 1</keyword>
          <keyword>test 2</keyword>
        </keywords>
      </languageVersion>
      <authors>
        <author>
          <name>First</name>
          <surname>last</surname>
          <email>author@gmail.com</email>
          <order>1</order>
          <instituteAffiliation>World</instituteAffiliation>
          <role>AUTHOR</role>
        </author>
      </authors>
    </article>
    <article>
      <type>ORIGINAL_ARTICLE</type>
      <languageVersion language="en">
        <title>Second Title</title>
        <abstract>test</abstract>
        <pdfFileUrl>http://test.com/download/41</pdfFileUrl>
        <publicationDate>2019-12-08T00:00:00Z</publicationDate>
        <pageFrom>22</pageFrom>
        <pageTo>26</pageTo>
        <doi/>
        <keywords>
          <keyword>test 1</keyword>
          <keyword>test 2</keyword>
        </keywords>
      </languageVersion>
      <authors>
        <author>
          <name>First</name>
          <surname>last</surname>
          <email>author@gmail.com</email>
          <order>1</order>
          <instituteAffiliation>World</instituteAffiliation>
          <role>AUTHOR</role>
        </author>
      </authors>
    </article>
  </issue>
</ici-import>';
$xml=simplexml_load_string($myXML) or die("Error: Cannot create object");
$xmlElement = new SimpleXMLElement($xml);
print_r($xmlElement);

?>

1 Ответ

0 голосов
/ 02 мая 2020

Вы пытаетесь создать элемент XML из загруженных данных XML в

$xmlElement = new SimpleXMLElement($xml);

к тому времени, когда вы дойдете до этой строки, $xml уже является SimpleXMLElement.

Вы можете просто использовать результат simplexml_load_string() для работы с ...

$xml=simplexml_load_string($myXML) or die("Error: Cannot create object");
echo $xml->asXML();
...