输出 BR 标签,使用 simpleXML
Output BR tag, using simpleXML
我想将文本字符串 "hello there" 分成两行。
为此,我需要 simpleXML 在输出文件 result.xml 中创建 "br-tag",但我只生成了代码 <br>
.
<?php
// DOMDocument
$dom = new DomDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$html = $dom->appendChild($dom->createElement("html"));
$xmlns = $dom->createAttribute('xmlns');
$xmlns->value = 'http://www.w3.org/1999/xhtml';
$html->appendChild($xmlns);
// SimpleXML
$sxe = simplexml_import_dom($dom);
$head = $sxe->addChild('head', ' ');
$body = $sxe->addChild('body', 'hello <br> there');
echo $sxe->asXML('result.xml');
结果:
hello <br> there
想要的结果:
你好
有
首先,PHP 的简单 XML 扩展仅适用于 XML,不适用于 HTML。您在设置代码中正确地提到了 XHTML ,但这意味着您需要使用 XML 自闭合元素,例如 <br />
而不是 HTML 未闭合标签,例如 <br>
.
其次,addChild
方法将文本内容作为第二个参数,而不是原始文档内容;所以正如您所见,它会自动为您转义 <
和 >
。
SimpleXML 确实是围绕 XML 这种严格的元素树设计的,而不是像 XHTML 这样的元素与文本内容交错的标记语言,所以在这种情况下,您最好坚持使用 DOM.
即便如此,恐怕也没有等效的 JS "innerhtml" 属性,所以我相信您必须单独添加文本和 br
元素节点,例如
$body = $html->appendChild( $dom->createElement('head') );
$body->appendChild( $dom->createTextNode('hello') );
$body->appendChild( $dom->createElement('br') );
$body->appendChild( $dom->createTextNode('world') );
我想将文本字符串 "hello there" 分成两行。
为此,我需要 simpleXML 在输出文件 result.xml 中创建 "br-tag",但我只生成了代码 <br>
.
<?php
// DOMDocument
$dom = new DomDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$html = $dom->appendChild($dom->createElement("html"));
$xmlns = $dom->createAttribute('xmlns');
$xmlns->value = 'http://www.w3.org/1999/xhtml';
$html->appendChild($xmlns);
// SimpleXML
$sxe = simplexml_import_dom($dom);
$head = $sxe->addChild('head', ' ');
$body = $sxe->addChild('body', 'hello <br> there');
echo $sxe->asXML('result.xml');
结果:
hello <br> there
想要的结果:
你好
有
首先,PHP 的简单 XML 扩展仅适用于 XML,不适用于 HTML。您在设置代码中正确地提到了 XHTML ,但这意味着您需要使用 XML 自闭合元素,例如 <br />
而不是 HTML 未闭合标签,例如 <br>
.
其次,addChild
方法将文本内容作为第二个参数,而不是原始文档内容;所以正如您所见,它会自动为您转义 <
和 >
。
SimpleXML 确实是围绕 XML 这种严格的元素树设计的,而不是像 XHTML 这样的元素与文本内容交错的标记语言,所以在这种情况下,您最好坚持使用 DOM.
即便如此,恐怕也没有等效的 JS "innerhtml" 属性,所以我相信您必须单独添加文本和 br
元素节点,例如
$body = $html->appendChild( $dom->createElement('head') );
$body->appendChild( $dom->createTextNode('hello') );
$body->appendChild( $dom->createElement('br') );
$body->appendChild( $dom->createTextNode('world') );