Привет,
У меня есть конечная точка, которая возвращает данные XML, но с содержанием HTMl,
Пока использование simplexml_load_string($result, "SimpleXMLElement", LIBXML_NOCDATA); возвращает полосатую версию, т.е. все теги были удалены
Пример данных
<JUDGMENT>
<summary>INTRODUCTION: <br />This appeal borders on the Law of Contract.<br /><br />FACTS: <br />From the statement of claim filed by the plaintiff (respondent) breach of contract and negligence were said to have been committed against it, by the appellant. Amongst other prayers, the respondent claimed:-<br />(a) one hundred million naira as general damages for malicious breach of contract and negligent conduct;<br />(b) sixty-four million, two hundred and fifty thousand, nine hundred and twenty naira as special damages;<br /></summary>
</JUDGMENT>
Разбор моего метода
protected function scaffoldXML($result)
{
$xml = simplexml_load_string($result, "SimpleXMLElement", LIBXML_NOCDATA);
return $json = json_encode($xml);
}
Возврат
"summary":"INTRODUCTION: This appeal borders on the Law of Contract.FACTS: From the statement of claim filed by the plaintiff (respondent) breach of contract and negligence were said to have been committed against it, by the appellant. Amongst other prayers, the respondent claimed:-(a) one hundred million naira as general damages for malicious breach of contract and negligent conduct;(b) sixty-four million, two hundred and fifty thousand, nine hundred and twenty naira as special damages;(c) one million, five hundred thousand naira only being the cost of this action; and(d) 10% interest per annum on the judgment sum, from the date of judgment until liquidation.The appellant denied the claim and on exchange of pleadings...
Вопрос снова
Я хочу сохранить теги HTML в данных при удалении тегов XML
Пожалуйста, обрати внимание Это полный XML, структура которого не может быть предсказана, и я хочу извлечь все значения в XML, а не только часть
Кодирование должно в конечном итоге отправляться как JSON, заметьте, это всего лишь фрагмент XML-данных. Проблема в том, что возвращает функция.
вы можете сначала получить данные, которые хотите, а затем закодировать их, всего несколько строк, поэтому я не думаю, что это повредит каким-либо образом
Поскольку в вашем XML нет CDATA, вы можете напрямую передать строку XML в json_encode (). Нет необходимости использовать SimpleXML.
Вы действительно затрудняете понять, в чем заключается ваша реальная проблема ... Вы хотите извлечь только часть входного XML-файла? Затем используйте SimpleXMLElement::saveXML, чтобы снова получить XML-представление определенного узла ...
Я просто хочу извлечь данные HTML из содержимого XML, а не часть XML, функция simplexml_load_file, похоже, удаляет все теги
SimpleXML не удаляет теги. Вы теряете контент, потому что пытаетесь преобразовать напрямую из XML в JSON, что всегда будет переводом с потерями, потому что эти два формата используют разные структуры. Возьмите на себя одну функцию: извлечение некоторого HTML в виде строки из XML; как только у вас есть строка, используйте другую функцию для другой ответственности по добавлению ее в новую структуру, которая будет сериализована как JSON, если это действительно то, что вам нужно.
Если вы согласны с тем, что ваша проблема заключается в «извлечении подмножества XML, включая теги», то это дубликат: stackoverflow.com/questions/1937056/php-simplexml-get-innerx мл (обратите внимание, что для любого парсера здесь нет HTML теги <br /> являются просто частью XML).






Причина в том, что преобразование объекта SimpleXML в строку возвращает его текстовое содержимое. Я не уверен, почему вы хотите JSON кодировать объект XML, когда у вас уже есть строка (для которой кодировка JSON даже не имеет смысла).