PHP我可以阻止asXML()编码&符号(&)吗?

时间:2014-03-26 14:42:34

标签: php xml encoding xml-parsing simplexml

我有很多我解析过的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 &amp;mdash; Britain's this is just test text.</p>
        <p style="@Body justified">&amp;quot;This is more test text,&amp;quot;</p>
    </block>
    ...
</nitf>

在旁注中,我有一个功能,它实际上将htmlentities转换为其编号的等价物,但不认为有必要在此缩写版本中显示码。

0 个答案:

没有答案