一尘不染

用PHP生成XML文档(转义字符)

php

我正在从PHP脚本生成XML文档,并且需要转义XML特殊字符。我知道应该转义的字符列表;但是正确的方法是什么?

应该使用反斜杠(')来转义字符还是正确的方法?有内置的PHP函数可以为我处理此问题吗?


阅读 471

收藏
2020-05-29

共1个答案

一尘不染

使用DOM类生成整个XML文档。它将处理我们甚至不需要关心的编码和解码。


编辑: 这被@Tchalvak批评:

DOM对象创建了一个完整的XML文档,它不容易将其自身编码为一个字符串。

错了,DOMDocument只能输出一个片段而不是整个文档:

$doc->saveXML($fragment);

这使:

Test &amp; <b> and encode </b> :)
Test &amp;amp; &lt;b&gt; and encode &lt;/b&gt; :)

如:

$doc = new DOMDocument();
$fragment = $doc->createDocumentFragment();

// adding XML verbatim:
$xml = "Test &amp; <b> and encode </b> :)\n";
$fragment->appendXML($xml);

// adding text:
$text = $xml;
$fragment->appendChild($doc->createTextNode($text));

// output the result
echo $doc->saveXML($fragment);

观看演示

2020-05-29