我有很多我解析过的xml文件,需要用htmlentities
替换一些段落文本,然后重新保存。
问题在于,当我使用asXML()
函数保存新的xml文件时,它会对html实体中的&符号进行编码。
因此—
变为—
我的代码的简化版本:
<?php
$xmlFile = simplexml_load_file('test.xml');
$paragraphs = $xmlFile->body->{'body.content'}->block->p;
$paragraphCount = count($paragraphs);
// loop through the story
for ($i=0; $i<$paragraphCount; $i++) {
// Convert paragraph to htmlentities
$xmlFile->body->{'body.content'}->block->p[$i] = htmlentities($paragraphs[$i]);
}
// save the updated xml file
$xmlFile->asXML('new.xml');
?>
其中输出的内容如下:
<?xml version="1.0" encoding="windows-1252"?>
<nitf>
...
<block>
<p style="@Body justified">LONDON &mdash; Britain's this is just test text.</p>
<p style="@Body justified">&quot;This is more test text,&quot;</p>
</block>
...
</nitf>
在旁注中,我有一个功能,它实际上将htmlentities
转换为其编号的等价物,但不认为有必要在此缩写版本中显示码。