Вставка тегов в node.

BoTa

Новичок
Вставка тегов в node.

Делаю вот так:
PHP:
$document = new SimpleXMLElement($basexml);
$document->content = "<p>Бла-бла<br />бла-бла</p>";
echo $xml->asXML();
и на выходе получаю вот это:
PHP:
<?xml version="1.0" encoding="utf8"?>
<document>
  . . .
  <content>&lt;p&gt;Бла-бла&lt;br /&gt;бла-бла&lt;/p&gt;</content>
  . . .
</document>
"<p>Бла-бла<br />бла-бла</p>" — Отформатированный с помощью WYSIWYG-редактора и хранимый в базе текст.

Как быть в такой ситуации? Кажется я что-то недопонимаю...
 

Bitterman

Новичок
По-моему, ты недопонимаешь, что ты хочешь сделать. По крайней мере я этого не понял.
Ты добавляешь текст с тегами, как контент, поэтому он и выводится у тебя как контент. Если тебе надо, чтобы в твоей ситуации теги выводились как теги, то и добавлять их надо как узлы, что вряд ли возможно, так как это текст из редактора.
Объясни конкретнее, чего ты хочешь.
 

Angerslave

Новичок
Надо парсить текст, который выдал висивиг в отедельный XML-элемент и уже этот элемнт добавлять как child к твоему $document.
 

slach

Новичок
последний совет самый правильный

DOMDocument::LoadXML
DOMDocument::appendChild
simplexml_import_dom (если уж так приперло использовать SimpleXML)
 

BoTa

Новичок
Автор оригинала: Bitterman
По-моему, ты недопонимаешь, что ты хочешь сделать. По крайней мере я этого не понял.
Ты добавляешь текст с тегами, как контент, поэтому он и выводится у тебя как контент. Если тебе надо, чтобы в твоей ситуации теги выводились как теги, то и добавлять их надо как узлы, что вряд ли возможно, так как это текст из редактора.
Объясни конкретнее, чего ты хочешь.
Конкретно, что я хочу:
Хочу составить xml-документ со всеми необходимыми данными, включая вот такой заранее отформатированный текст, для последующего преобразования(xsl) в xhtml.

<xsl:template match="content">
<p><xsl:value-of select="." disable-output-escaping="yes" /></p>
</xsl:template>
C помощью подобной конструкции можно этот html контент вставить в конечный xhtml. disable-output-escaping — обрабатывает содержимое <content> так как есть.

Спасибо за советы!
Пока на практике не пробовал, но думаю буду делать так:
<content>
<![CDATA[<p>Бла-бла<br />бла-бла</p>]]>
</content>
 

Bitterman

Новичок
гм, может я чего и путаю, но, по-моему, тот XML, который ты привел через <xsl:value-of select="." disable-output-escaping="yes" /> должен выводиться замечательно, именно в том виде, в котором он тебе нужен.
 

BoTa

Новичок
Автор оригинала: Bitterman
гм, может я чего и путаю, но, по-моему, тот XML, который ты привел через <xsl:value-of select="." disable-output-escaping="yes" /> должен выводиться замечательно, именно в том виде, в котором он тебе нужен.
Да. Но проблема у меня была в том как засунуть в <content></content> этот тект(он вставлялся туда как обычный текст с преобразованием "<" в символьные примитивы), а мне то нужны теги, а не &lt и т.п.
 

Bitterman

Новичок
Если он нормально выводится, то какая тебе разница, как он хранится в XML?
 

Beavis

Banned
даже ссылку дали на вариант как надо делать... ну раз такой экспериментатор - флаг в руки
 

BoTa

Новичок
Эксперименты нужны для того чтобы понять что мне больше подходит.
Предпочтение наверное отдам CDATA c DOM'ом(в Simple XML нет возможности добавлять CDATA). А парсить этот контент и добавлять как узлы, слишком неоправданное занятие - основная задача(единственная) это вывести этот контент в конечный xhtml, и CDATA ее отлично решает.
 

slach

Новичок
Тогда не забудь перед вставкой в CDATA
каким нибудь tidy пройтись
чтобы у тебя XHTML в тегах был а не HTML
 

Beavis

Banned
не понял... а какая разница что в CDATA вставлять? XHTML, HTML или вообще двоичный код?)
 

Angerslave

Новичок
slach, наоборот, CDATA пофиг. А вот при импортировании нодов как раз исходный HTML должен быть XML-валидным.
 

slach

Новичок
Angerslave
RTFM про DomDocument::loadHTML()

Beavis
человек хочет на выходе получить XHTML
если он просто выведет содержимое CDATA секции то это будет именно содержимым CDATA, перед вставокй в CDATA необходимо прогнать через TIDY
иначе после печати будет невеллформед XHTML
 

Angerslave

Новичок
Хм, как всё запуталось... slach, ты советуешь сначала пройтись tidy по коду, а затем кидаешь ртфм на loadHTML... А я протупил и не заметил, что топикстартер решил юзать DOM...
 
Сверху