从XML元素中删除开始和结束空格

2022-04-13 00:00:00 string xml php simplexml

如何删除XML字段前后的所有空格字符?

<data version="2.0">

  <field> 

     1 

  </field>        

  <field something=" some attribute here... "> 

     2  

  </field>

</data>

请注意,1和2之前的空格以及"此处的某些属性...",我想用PHP删除它。

if(($xml = simplexml_load_file($file)) === false) die();

print_r($xml);

数据似乎也不是字符串,我需要在每个变量之前附加(字符串)。为什么?


解决方案

您可能需要使用以下内容:

$str = file_get_contents($file);
$str = preg_replace('~s*(<([^>]*)>[^<]*</2>|<[^>]*>)s*~','$1',$str);
$xml = simplexml_load_string($xml,'SimpleXMLElement', LIBXML_NOCDATA);

我还没有尝试过,但您可以在http://www.lonhosford.com/lonblog/2011/01/07/php-simplexml-load-xml-file-preserve-cdata-remove-whitespace-between-nodes-and-return-json/上找到有关它的更多信息。

请注意,左方括号和右方括号之间的空格(<x> _space_ </x>)和属性(<x attr=" _space_ ">)实际上是XML文档数据的一部分(与<x> _space_ <y>之间的空格形成对比),因此我建议您使用的源代码应该少一些空格。

相关文章