php simplexml_load,php函数simplexml_load_string转xml的小坑
时间: 2023-12-19 21:05:11 浏览: 174
PHP中simplexml_load_string函数使用说明
在使用 PHP 的 simplexml_load 和 simplexml_load_string 函数将 XML 转换成对象时,有一些小坑需要注意。
1. XML 命名空间
如果 XML 文件中使用了命名空间,需要在加载时指定命名空间,否则将无法正确解析。可以通过 simplexml_load_file 、simplexml_load_string 或者 SimpleXMLElement 类的 addChild 方法中添加命名空间参数。
例如:
```php
$xml = simplexml_load_file($filePath, 'SimpleXMLElement', LIBXML_NOCDATA, 'http://www.example.com/ns/');
```
2. 特殊字符转义
在 XML 文件中,一些特殊字符如 <、>、& 等需要进行转义,否则在解析时会出现错误。可以通过 PHP 的 htmlspecialchars 函数进行转义。
例如:
```php
$xmlStr = '<?xml version="1.0" encoding="UTF-8"?><root><content><p>Hello, World!</p></content></root>';
$xml = simplexml_load_string(htmlspecialchars($xmlStr));
```
3. CDATA
在 XML 文件中,使用 CDATA 标记来表示需要原样输出的数据,但是在解析时,simplexml_load 和 simplexml_load_string 会自动去掉 CDATA 标记,导致数据丢失。可以通过指定 LIBXML_NOCDATA 参数来保留 CDATA 标记。
例如:
```php
$xmlStr = '<?xml version="1.0" encoding="UTF-8"?><root><content><![CDATA[<p>Hello, World!</p>]]></content></root>';
$xml = simplexml_load_string($xmlStr, 'SimpleXMLElement', LIBXML_NOCDATA);
```
以上就是在使用 PHP 的 simplexml_load 和 simplexml_load_string 函数时需要注意的一些小坑。
阅读全文