Я пытаюсь преобразовать XML в JSON в PHP, используя simplexml, но преобразование не включает встроенный HTML. Я не уверен в правильной терминологии для встроенного HTML (встроенного?), Но ниже приведены некоторые примеры того, что я делаю и что я ищу:
Выдержка из XML, который я пытаюсь преобразовать:
<uscDoc xsi:schemaLocation="http://xml.house.gov/schemas/uslm/1.0 USLM-1.0.15.xsd" xml:lang="en" identifier="/us/usc/t1" xmlns="http://xml.house.gov/schemas/uslm/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
<meta>
<dc:title>Title 1</dc:title>
<dc:type>USCTitle</dc:type>
<docNumber>1</docNumber>
<docPublicationName>Online@116-17</docPublicationName>
<dc:publisher>OLRC</dc:publisher>
<dcterms:created>2019-04-04T07:37:52</dcterms:created>
<dc:creator>USCConverter 1.1</dc:creator>
</meta>
<main>
<title id="id14e8bf81-56ce-11e9-9468-8af4f27dcc3b" identifier="/us/usc/t1"><num value="1">Title 1—</num><heading>GENERAL PROVISIONS</heading>
<note topic="enacting" id="id14e90da2-56ce-11e9-9468-8af4f27dcc3b"><p>This title was enacted by <ref href="/us/act/1947-07-30/ch388">act July 30, 1947, ch. 388</ref>, § 1, <ref href="/us/stat/61/633">61 Stat. 633</ref></p></note>
<note topic="miscellaneous" id="id14e95bc3-56ce-11e9-9468-8af4f27dcc3b"><p>Current through 116-17</p></note>
Когда я преобразовываю это в JSON (или в массив) в PHP, это приводит к следующему:
Array
(
[@attributes] => Array
(
[identifier] => /us/usc/t1
)
[meta] => Array
(
[docNumber] => 1
[docPublicationName] => Online@116-17
)
[main] => Array
(
[title] => Array
(
[@attributes] => Array
(
[id] => id14e8bf81-56ce-11e9-9468-8af4f27dcc3b
[identifier] => /us/usc/t1
)
[num] => Title 1—
[heading] => GENERAL PROVISIONS
[note] => Array
(
[0] => Array
(
[@attributes] => Array
(
[topic] => enacting
[id] => id14e90da2-56ce-11e9-9468-8af4f27dcc3b
)
[p] => This title was enacted by , § 1,
)
[1] => Array
(
[@attributes] => Array
(
[topic] => miscellaneous
[id] => id14e95bc3-56ce-11e9-9468-8af4f27dcc3b
)
[p] => Current through 116-17
)
)
Часть, которая является неправильной (среди других пропущенных данных), является разделом, который включает следующее: «Этот заголовок был принят, §1,»
Когда я конвертирую этот XML с помощью онлайн-конвертера JavaScript в JSON (http://www.utilities -online.info / xmltojson / ), он конвертируется правильно:
{
"uscDoc": {
"-xsi:schemaLocation": "http://xml.house.gov/schemas/uslm/1.0 USLM-1.0.15.xsd",
"-xml:lang": "en",
"-identifier": "/us/usc/t1",
"-xmlns": "http://xml.house.gov/schemas/uslm/1.0",
"-xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"-xmlns:dc": "http://purl.org/dc/elements/1.1/",
"-xmlns:dcterms": "http://purl.org/dc/terms/",
"meta": {
"dc:title": "Title 1",
"dc:type": "USCTitle",
"docNumber": "1",
"docPublicationName": "Online@116-17",
"dc:publisher": "OLRC",
"dcterms:created": "2019-04-04T07:37:52",
"dc:creator": "USCConverter 1.1"
},
"main": {
"title": {
"-id": "id14e8bf81-56ce-11e9-9468-8af4f27dcc3b",
"-identifier": "/us/usc/t1",
"num": {
"-value": "1",
"#text": "Title 1—"
},
"heading": "GENERAL PROVISIONS",
"note": [
{
"-topic": "enacting",
"-id": "id14e90da2-56ce-11e9-9468-8af4f27dcc3b",
"p": {
"#text": [
"This title was enacted by ",
", § 1, "
],
"ref": [
{
"-href": "/us/act/1947-07-30/ch388",
"#text": "act July 30, 1947, ch. 388"
},
{
"-href": "/us/stat/61/633",
"#text": "61 Stat. 633"
}
]
}
},
Как видите, строка «этот заголовок был введен в действие» правильно разбита, поэтому ее можно перемежать с данными ниже, в том числе «акт 30 июля 1947 г., гл. 388» и «61 Stat. 633» . "
Я перепробовал все варианты, которые я могу найти в simplexml, чтобы он анализировал XML так, как это делает онлайн-анализатор XML в JSON, но я не могу заставить его работать. Я пробовал множество других фрагментов кода PHP, которые нашел здесь и в других местах, но не могу получить тот же результат.
Любая помощь будет оценена.