PHP DomDocument - самозакрывающийся тег и специальные символы - PullRequest
0 голосов
/ 20 февраля 2019

Я генерирую XML файл, используя PHP DomDocument, но в какой-то момент я застрял с самозакрывающимся тегом, содержащим права html.

Это желаемый вывод:

<http-headers>
   <header name="Access-Control-Allow-Origin" value="*" />
</http-headers>

Вот что я (неправильно) сейчас делаю:

$httpHeaders = $xml->createElement("http-headers");
$icecast->appendChild($httpHeaders);

$headerName = $xml->createTextNode('<header name="Access-Control-Allow-Origin" value="*" />');
$httpHeaders->appendChild($headerName);

Что дает мне:

<http-headers>&lt;header name="Access-Control-Allow-Origin" value="*" /&gt;</http-headers>

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

Также мне нужновыводить символы < и > вместо преобразования их в &lt; и &gt;.

Может ли кто-нибудь указать мне правильное направление, пожалуйста?

РЕДАКТИРОВАТЬ

Достигнут некоторый прогресс, добавив элемент правильным образом:

$httpHeaders = $xml->createElement("http-headers");
$icecast->appendChild($httpHeaders);
$httpHeadersHeader = $xml->createElement("header");
$httpHeaders->appendChild($httpHeadersHeader);
$httpHeadersHeader->setAttribute("name", '"Access-Control-Allow-Origin" value="*"'); 

Но он выводит html-коды вместо символов:

<http-headers>
    <header name="&quot;Access-Control-Allow-Origin&quot; value=&quot;*&quot;"/>
</http-headers>

Я добавляю кодировку UTF-8 перед выводом, но это не помогает:

$xml->encoding = 'UTF-8';
return $xml->save('php://output');

Как мне сделать так, чтобы выводился фактический символвместо кодов?

1 Ответ

0 голосов
/ 20 февраля 2019

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

$httpHeadersHeader->setAttribute("name", "Access-Control-Allow-Origin"); 
$httpHeadersHeader->setAttribute("value", "*"); 
...