php DOMDocument - 获取外部节点并将<! - [CDATA []]块作为字符串

时间:2016-04-19 11:09:11

标签: php xml domdocument

我有一个xml文件,其中一些节点有一个CDATA块,如下所示:

<item> 
  <content>OneWord</content>
</item>
<item> 
  <content><![CDATA[Some Text or Serialized arrays]]></content>
</item>

我试图让外部节点如下:

$file = 'file.xml';
$contents = file_get_contents( $file );
$dom = new DOMDocument( '1.0', 'utf-8' );
$dom->loadXML( $contents, LIBXML_NOCDATA );
$xpath = new DOMXPath( $dom );

// -- get outer
$item = $xpath->query( './item' )->item(1);
$str = $dom->saveXML($item);
var_dump($str);

它打印项目节点没有CDATA块但我希望该节点有CDATA块。

由于

1 个答案:

答案 0 :(得分:1)

是否不如删除LIBXML_NOCDATA选项(“Merge CDATA as text nodes”)那么简单?

对我来说,

$dom = new DOMDocument( '1.0', 'utf-8' );
$dom->loadXML( $contents );
$xpath = new DOMXPath( $dom );

// -- get outer
$item = $xpath->query( './item' )->item(1);
$str = $dom->saveXML($item);
var_dump($str);

输出

string '<item>
 <content><![CDATA[Some Text or Serialized arrays]]></content>
</item>' (length=78)