Simplexmlelement php utf 8

Получение SimpleXMLElement для включения кодировки в вывод

Что работает, но раздражает необходимость вручную указывать версию и кодировку. Предположим, что для этого вопроса я не могу использовать DOMDocument.

5 ответов

Вы можете попробовать это, но вы должны использовать simplexml_load_string для $xml

$xml // Your main SimpleXMLElement $xml->addAttribute('encoding', 'UTF-8'); 

Или вы можете использовать другие средства для добавления кодировки к вашему выводу.

Простая замена

$outputXML=str_replace('', '', $outputXML); 

Регулярные выражения

$outputXML=preg_replace('//' '', $outputXML); 

DOMDocument. Я знаю, что вы сказали, что не хотите использовать DOMDocument, но вот пример

$xml=dom_import_simplexml($simpleXML); $xml->xmlEndoding='UTF-8'; $outputXML=$xml->saveXML(); 

Вы можете обернуть этот код в функцию, которая получает параметр $encoding и добавляет его в

В DOMDocument есть синтаксическая ошибка: $xml->xmlEndoding=’UTF-8′; должно быть $xml->xmlEncoding=’UTF-8′; ,

Простой и понятный только это

$XMLRoot = new SimpleXMLElement(' '); 

для добавления атрибутов в элемент используйте только

$XMLRoot->addAttribute('name','juan'); 

добавить использование детей

$childElement = $XMLRoot->addChild('elementChild'); $childElement->addAttribute('attribName','somthing'); 

Предложение DOMDoc Cristian Toma кажется хорошим подходом, если документ не слишком тяжелый. Вы можете обернуть его примерно так:

private function changeEncoding(string $xml, string $encoding) < $dom = new \DOMDocument(); $dom->loadXML($xml); $dom->encoding = $encoding; return $dom->saveXML(); > 

Пригодится, когда у вас нет доступа к сериализатору, создающему xml.

Я бы сказал, что вам нужно будет сделать это при создании каждого объекта XML. Даже если у SimpleXMLElement есть способ его установки, вам все равно нужно будет установить его, поскольку я думаю, что было бы возможно, чтобы объект выбрал допустимый умолчаний.

Может быть, создать константу и создать объекты вроде этого

$XML = new SimpleXMLElement($XMLNamespace . ""); echo($XML->asXML()); 

Если вы не укажете кодировку, SimpleXML не может (разумно) угадать, какой из них вы планировали.

Я знаю, но единственный способ указать кодировку для SimpleXML — это сделать ее явной в конструкторе, а затем вам нужно также указать атрибут версии XML, иначе он выдаст ошибку. Я, очевидно, могу сделать это таким образом, это просто раздражает, когда приходится делать это вообще. Я думаю, SimpleXML слишком прост 🙂

Я не могу найти ссылки на это в документации, но у меня сложилось впечатление, что вы не можете указать кодировку, потому что SimpleXML ожидает UTF-8.

Ещё вопросы

  • 0 Почему у меня возникают проблемы с изменением курсоров мыши в моей реализации интерактивного QGraphicsView в Qt?
  • 0 как я могу разрешить / usr / bin / ld: не могу найти ошибку -lconfig ++
  • 1 Запрет проверки Struts 2 для определенных действий
  • 0 Хранить данные в базе данных даже удаляются на сайте
  • 0 Как предупредить значение после инициализации представления с помощью requirejs и kendo mobile
  • 1 Как вы показываете содержание сессии на странице JSP?
  • 0 Javascript: Как показать скрытые div в зависимости от роли безопасности
  • 0 Ошибка PostgreSQL при попытке подключения в python: неверный dsn: неверный параметр подключения «имя пользователя»
  • 0 Как определить некоторые переменные конфигурации
  • 1 Visual Studio 2017 Cordova & Android
  • 1 SelectionChanged показывает старое значение
  • 0 jQuery jeditable Не удается прочитать свойство «плагин» неопределенного при попытке использовать datetimepicker
  • 1 NiFi: Какой процессор я бы использовал для подключения к стороннему API, требующему 3 учетных элемента?
  • 0 MySQL не возвращает массив в angularJS
  • 1 Возможно непреднамеренное сравнение ссылок в C #
  • 0 Сортировка массива в зависимости от разных значений
  • 1 Адаптирование spymemcached Java-клиента GetFuture к Guava ListenableFuture
  • 0 Ошибки отображаются, когда я запускаю на своем локальном хосте
  • 0 Почему, когда я пытаюсь скрыть свой треугольник CSS с помощью jQuery, добавив класс, это не работает?
  • 0 Div точная высота как высота окна
  • 1 перестановки определенных цифр в Java
  • 1 Эквивалент adControl.HasAd в Windows Phone 8.0
  • 0 Различные результаты PHP между терминалом и браузером
  • 1 Прочитать тег NFC от Xamarin
  • 0 MYSQL — СОЗДАТЬ столбцы таблицы поиска в одну строку
  • 1 Сопоставить элементы в ListView от одного адаптера со значениями из другого ListView и адаптера
  • 1 Блокнот Jupyter не будет импортировать matplotlib, хотя он, кажется, установлен
  • 1 Как создать частичные классы из CodeFirst
  • 1 Должен ли Pandas DatetimeIndex.weekday возвращать индекс или пустой массив?
  • 1 Отправить токен в шапке (разные действия)
  • 3 Не найдено приложение для TargetPlatform.android_x86
  • 0 php msgpack_pack и как конвертировать в Unity3d C #
  • 1 SQL-запрос возвращает данные, но ResultSet пуст
  • 0 C ++: при возврате адреса переменной члена класса компилятор заставляет его иметь тип const *
  • 1 график кварцевых заданий не работает как пакет OSGI
  • 0 я использую ng-grid, который загружает данные из файла json, я хочу сделать кнопки редактирования и удаления, чтобы редактировать и удалять мои данные, используя угловой js?
  • 0 Как создать хранимую процедуру, которая вставляет как ввод, так и данные из оператора выбора после первой вставки
  • 0 Записать переменные JavaScript в файл JSON
  • 1 ItemsControl в HubSection не на 100% высоты
  • 1 Как удалить тень из панели приложений и добавить тень в TabLayout
  • 1 Как сравнить разницу в многомерных массивах?
  • 0 Сортировка столбцов таблицы в AngularJS
  • 0 ng-repeat с динамическими данными json, полученными в качестве аргумента
  • 0 Php / Codeigniter Скачать файл
  • 1 System.ServiceModel.ProtocolException: удаленный сервер возвратил неожиданный ответ: (413) слишком сложный объект запроса
  • 0 Доступ к wiringPi (GPIO) из Java через JNI
  • 0 заполнить форму JQuery из XML
  • 0 Плагин проверки jQuery и пользовательские сообщения об ошибках в ASP.NET MVC4
  • 0 координаты мыши только с круглыми числами — функция jquery
  • 0 Почему $ _POST не распознает определенные загруженные файлы?

Источник

SimpleXMLElement::asXML

The asXML method formats the parent object’s data in XML version 1.0.

Parameters

If a string value is provided, the function writes the data to the file rather than returning it.

Return Values

If the filename isn’t specified, this function returns a string on success and false on error. If the parameter is specified, it returns true if the file was written successfully and false otherwise.

Changelog

Examples

Example #1 Get XML

$xml = new SimpleXMLElement ( $string );

The above example will output:

asXML also works on Xpath results:

Example #2 Using asXML() on SimpleXMLElement::xpath() results

// Continued from example XML above.

foreach ( $result as $node ) echo $node -> asXML ();
>
?>

The above example will output:

See Also

User Contributed Notes 2 notes

To prevent asXML from encoding vowels unwantedly, simply use an approriate XML header with encoding in advance.

If you do so, asXML will happily leave your vowels (and the header) entirely untouched.

$sxe = new SimpleXMLElement ( $xmlstr );

?>

$xmlstr and $output are identical now.

The subsequent use of html_entity_decode() (as proposed in the very beginning in another post) has several drawbacks:

1. It is slow
2. It is expensive
3. If there are already encoded arrow brackets or double quotes in your source for instance (as shown in the above example), markup will be broken.

Function asXML decodes special chars like ø, æ and others to æ, ø

To get normal output use without quoting:

$xml = html_entity_decode($xml, ENT_NOQUOTES, ‘UTF-8’);

Источник

Читайте также:  Php fpm not root
Оцените статью