PHP читать и анализировать XML как файл - PullRequest
0 голосов
/ 16 ноября 2018

Мы индексируем наши журналы с помощью PHP.У нас есть файлы метаданных журнала.Я пытаюсь разобрать его с помощью PHP SimpleXML, но получаю много ошибок.

Предупреждение: simplexml_load_string (): Entity: строка 19: ошибка синтаксического анализатора: несоответствие открытия и окончания тега: строка 19 XUI иBB в *** в строке 62

Предупреждение: simplexml_load_string (): s; S PERSPECTIVE

Предупреждение: simplexml_load_string (): ^ в *** в строке 62

Предупреждение: simplexml_load_string(): Объект: строка 44: ошибка синтаксического анализатора: несоответствие открывающего и завершающего тега: BB строка 4 и D в *** в строке 62

Предупреждение: simplexml_load_string (): 33-е изд.Сент-Луис, Миссури: Elsevier Health Sciences;2016.

Предупреждение: simplexml_load_string (): ^ in *** в строке 62

Предупреждение: simplexml_load_string (): объект: строка 61: ошибка синтаксического анализатора: несоответствие открытия и окончания тега: строка 61 XUI и BBв *** в строке 62

Предупреждение: simplexml_load_string (): R ДЛЯ РЕДАКТОРА

Предупреждение: simplexml_load_string (): ^ в *** в строке 62

Предупреждение: simplexml_load_string (): Сущность: строка 74: ошибка синтаксического анализатора: несоответствие при открытии и окончании тега: BB-строка 46 и D в *** в строке 62

Когда я смотрю на файл, он выглядит как файл XML.Как мне разобрать его с помощью PHP?.

Код, который я использую:

$file = file_get_contents('xyz.0');

$file = utf8_decode($file);
$file = str_replace("&", "", $file); //For problems with & character

//libxml_use_internal_errors(true);
$xml = simplexml_load_string($file, 'SimpleXMLElement', LIBXML_NOCDATA);

Пример XML-кода из файла:

<!DOCTYPE dg SYSTEM "ovidbase.dtd"> <DG><COVER NAME="G1893697-201804000-00000"> <D AN="01893697-201804000-00001" V="2009.2F" FILE="G1893697-201804000-00001"> <BB> <TG> <TI>Oh Blood Pressure Measurements&mdash;Where Art Thou&quest;</TI></TG> <BY> <PN><FN>G.</FN><MN>Stephen</MN><SN>Morris</SN><DEG>PT, PhD, FACSM</DEG></PN> <AF><P>President, Oncology Section of the APTA; and Professor, Department of Physical Therapy, Wingate University, Wingate, NC</P></AF> <BT><P><E T="B">Correspondence:</E> G. Stephen Morris, PT, PhD, FACSM, Department of Physical Therapy, Wingate University, 215 N. Camden Rd, Wingate, NC 28174 (<URL>s.morris&commat;wingate.edu</URL>).</P><P>The author declares no conflicts of interest.</P></BT></BY> <SO> <PB>Rehabilitation Oncology</PB> <ISN>2168-3808</ISN> <DA><MO>April</MO><YR>2018</YR></DA> <V>36</V> <IS><IP>2</IP></IS> <PG>79&ndash;80</PG></SO> <CP>&copy; 2018 Oncology Section, APTA.</CP> <DT>PRESIDENT&apos;S PERSPECTIVE</DT><XUI XDB="pub-doi" UI="10.1097/01.REO.0000000000000118"></BB> <BD> <LV1><HD>&NA;</HD> <P>physical therapy&quest;</P></LV1> <LV1><SG><SGN>G. Stephen Morris, PT, PhD, FACSM</SGN></SG></LV1></BD> <ED> <EDS><HD>REFERENCES</HD> <RF ID="R1-1">1. <JRF><DRF>Arena SK, Reyes A, Rolf M. Behaviors, and knowledge of outpatient physical therapists. Cardiopulm Phys Ther J. 2018;9:3&ndash;12.</DRF><PN><FN>SK</FN><SN>Arena</SN></PN><PN><FN>A</FN><SN>Reyes</SN></PN><PN><FN>M</FN><SN>Rolf</SN></PN><TI>Behaviors, and knowledge of outpatient physical therapists</TI><PB>Cardiopulm Phys Ther J</PB><DA><YR>2018</YR></DA><V>9</V><PG>3&ndash;12</PG></JRF></RF> <RF ID="R2-1">2. <URF>US Preventative Services Task Force. High blood pressure in adults: screening. https:&sol;&sol;www.uspreventiveservicestaskforce.org&sol;Page&sol;Document&sol;RecommendationStatementFinal&sol;high-blood-pressure-in-adults-screening. Accessed January 12, 2018.</URF></RF> <RF ID="R3-1">3. <URF>Centers for Disease Control and Prevention. High blood pressure fact sheet. https:&sol;&sol;www.cdc.gov&sol;bloodpressure&sol;facts.htm. Accessed January 12, 2018.</URF></RF> <RF ID="R4-1">4. <JRF><DRF>Lein DH Jr, Clark D, Graham C, Perez P, Morris D. A model to integrate health promotion and wellness in physical therapist practice: development and validation. Phys Ther. 2017;97(12):1169&ndash;1181.</DRF><PN><FN>DH</FN><SN>Lein</SN></PN><PN><FN>D</FN><SN>Clark</SN></PN><PN><FN>C</FN><SN>Graham</SN></PN><PN><FN>P</FN><SN>Perez</SN></PN><PN><FN>D</FN><SN>Morris</SN></PN><TI>A model to integrate health promotion and wellness in physical therapist practice: development and validation</TI><PB>Phys Ther</PB><DA><YR>2017</YR></DA><V>97</V><PG>1169&ndash;1181</PG></JRF></RF> <RF ID="R5-1">5. <URF>Riebe D, ed. ACSM&apos;s Guidelines for Exercise Testing and Prescription. 10th ed. Baltimore, Maryland: Wolters Kluwer; 2018.</URF></RF> <RF ID="R6-1">6. <JRF><DRF>Pickering TG, Hall JE, Appel LJ, et al Recommendations for blood pressure measurement in humans and experimental animals: part 1: blood pressure measurement in humans: a statement for professionals from the Subcommittee of Professional and Public Education of the American Heart Association Council on High Blood Pressure Research. Circulation. 2005;111(5):697&ndash;716.</DRF><PN><FN>TG</FN><SN>Pickering</SN></PN><PN><FN>JE</FN><SN>Hall</SN></PN><PN><FN>LJ</FN><SN>Appel</SN></PN><TI>Recommendations for blood pressure measurement in humans and experimental animals: part 1: blood pressure measurement in humans: a statement for professionals from the Subcommittee of Professional and Public Education of the American Heart Association Council on High Blood Pressure Research</TI><PB>Circulation</PB><DA><YR>2005</YR></DA><V>111</V><PG>697&ndash;716</PG></JRF></RF> <RF ID="R7-1">7. <JRF><DRF>Rabbia F, Testa E, Rabbia S, et al Effectiveness of blood pressure educational and evaluation program for the improvement of measurement accuracy among nurses. High Blood Press Cardiovasc Prev. 2013;20(2):77&ndash;80.</DRF><PN><FN>F</FN><SN>Rabbia</SN></PN><PN><FN>E</FN><SN>Testa</SN></PN><PN><FN>S</FN><SN>Rabbia</SN></PN><TI>Effectiveness of blood pressure educational and evaluation program for the improvement of measurement accuracy among nurses</TI><PB>High Blood Press Cardiovasc Prev</PB><DA><YR>2013</YR></DA><V>20</V><PG>77&ndash;80</PG></JRF></RF> <RF ID="R8-1">8. <JRF><DRF>Frese EM, Richter RR, Burlis TV. Self-reported measurement of heart rate and blood pressure in patients by physical therapy clinical instructors. Phys Ther. 2002;82(12):1192&ndash;1200.</DRF><PN><FN>EM</FN><SN>Frese</SN></PN><PN><FN>RR</FN><SN>Richter</SN></PN><PN><FN>TV</FN><SN>Burlis</SN></PN><TI>Self-reported measurement of heart rate and blood pressure in patients by physical therapy clinical instructors</TI><PB>Phys Ther</PB><DA><YR>2002</YR></DA><V>82</V><PG>1192&ndash;1200</PG></JRF></RF> <RF ID="R9-1">9. <JRF><DRF>Mouhavar E, Salahudeen A, Yeh ETH. Hypertension in cancer patients. Tex Heart Inst J. 2011;38(3):263&ndash;265.</DRF><PN><FN>E</FN><SN>Mouhavar</SN></PN><PN><FN>A</FN><SN>Salahudeen</SN></PN><PN><FN>ETH</FN><SN>Yeh</SN></PN><TI>Hypertension in cancer patients</TI><PB>Tex Heart Inst J</PB><DA><YR>2011</YR></DA><V>38</V><PG>263&ndash;265</PG></JRF></RF> <RF ID="R10-1">10. <URF>Gahart BL, Nazareno AR, eds. Intravenous Medications: A Handbook for Nurses and Health Professionals. 33rd ed. St. Louis, MO: Elsevier Health Sciences;
2016.</URF></RF></EDS></ED></D> <D AN="01893697-201804000-00002" V="2009.2F" FILE="G1893697-201804000-00002"> <BB> <TG> <TI>In 2018 &ldquo;Spring Is the Time of Plans and Projects&rdquo;</TI></TG> <BY> <PN><FN>Lucinda</FN><MN>(Cindy)</MN><SN>Pfalzer</SN><DEG>PT, PhD, FACSM, FAPTA</DEG></PN> <AF><P>Editor of <E T="I">Oncology Rehabilitation</E> and Emeriti Professor, Physical Therapy Department, University of Michigan-Flint, Flint, MI</P></AF> <BT><P><E T="B">Correspondence:</E> Lucinda (Cindy) Pfalzer, PT, PhD, FACSM, FAPTA, Physical Therapy Department, University of Michigan-Flint, 2157 WSW Bldg, Flint, MI 48502 (<URL>cpfalzer&commat;umich.edu</URL>).</P><P>The author declares no conflicts of interest.</P></BT></BY> <SO> <PB>Rehabilitation Oncology</PB> <ISN>2168-3808</ISN> <DA><MO>April</MO><YR>2018</YR></DA> <V>36</V> <IS><IP>2</IP></IS> <PG>81&ndash;82</PG></SO> <CP>&copy; 2018 Oncology Section, APTA.</CP> <DT>LETTER TO THE EDITOR</DT><XUI XDB="pub-doi" UI="10.1097/01.REO.0000000000000119"></BB> <BD>

Вы можете скачатьXML-файл здесь .

Спасибо

РЕДАКТИРОВАТЬ: Это отличается от вопроса Ошибка синтаксического анализатора XML: сущность не определена Эти файлы созданылет назад (2000-е годы и т. д.).Я не генерирую эти файлы, я только пытаюсь проанализировать их и получить метаданные.

РЕДАКТИРОВАТЬ 2: Извините, я также пытаюсь проанализировать с Dom Parser и добавил ошибки из него, когда я создал сообщение.Теперь я добавил ошибки SimpleXML.

1 Ответ

0 голосов
/ 17 ноября 2018

Файл не соответствует спецификации XML, есть несколько вещей, таких как неизвестные объекты, а также незамкнутые теги.

Замена & пробелом позволит игнорировать сущности, чтобы решить некоторые другие проблемы, это был случай использования регулярных выражений для упорядочивания тегов (я не эксперт по регулярным выражениям, но замена берет <COVER ...> и преобразует его в <COVER ... />) ...

$file = file_get_contents('20180400.xml');

$file = str_replace("&", "", $file); //For problems with & character
$file = preg_replace('/<COVER (.*?)>/', '<COVER $1 />', $file);
$file = preg_replace('/<XUI (.*?)>/', '<COVER $1 />', $file);
$file = preg_replace('/<TGP (.*?)>/', '<COVER $1 />', $file);

// libxml_use_internal_errors(true);
$xml = simplexml_load_string($file, 'SimpleXMLElement', LIBXML_NOCDATA);
echo $xml->asXML("out.xml");
...