我有一个XML / SVG。部分原因:
<text id="p6_segmentMainLabel5-outer" class="p6_segmentMainLabel-outer" style="font-size: 11px; font-family: arial; fill: rgb(170, 170, 170);">BüG [349]</text>
里面有一个特殊的角色。如何在不转义所有“&lt;”的情况下清理这些特殊字符的整个XML和“&gt;”到&lt;和&gt;?我可以创建一个我要转换的所有字符的数组,但我想要一个只排除&lt;&gt;的方法。和行情有一个干净的XML。
答案 0 :(得分:2)
对变音符号进行编码不会使您的XML“更清晰”,但更难以阅读。
除非您想创建ASCII XML,否则不需要对不属于ASCII的变音符号和其他字符进行编码。这不是经常需要的。
使用UTF-8作为XML的编码,99%的时间你会很好。
如果需要ASCII,请在XML-API上指定编码(默认为UTF-8):
$dom = new DOMDocument('1.0', 'ASCII');
$dom
->appendChild($dom->createElement('text'))
->appendChild($dom->createTextNode('ÄÖÜ'));
echo $dom->saveXml();
输出:
<?xml version="1.0" encoding="ASCII"?>
<text>ÄÖÜ</text>
可以将XML加载到DOM中并将所有节点复制到定义为使用ASCII的新DOM:
$source = new DOMDocument();
$source->loadXml(
'<?xml version="1.0" encoding="utf-8" ?><text>ÄÖÜ</text>'
);
$target = new DOMDocument('1.0', 'ASCII');
$target->appendChild(
$target->importNode(
$source->documentElement, TRUE
)
);
echo $target->saveXml();
如果您将XML生成为文本,则可以使用htmlentities()
函数转换字符串。