当前位置:  开发笔记 > 编程语言 > 正文

无论上下文如何,都将SimpleXML对象强制为字符串

如何解决《无论上下文如何,都将SimpleXML对象强制为字符串》经验,为你挑选了3个好方法。

假设我有一些像这样的XML


  
    This is title 1
  

下面的代码执行我想要的,它将标题输出为字符串

$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;

这是我的问题.下面的代码不会将标题视为该上下文中的字符串,因此我最终得到的是数组中的SimpleXML对象而不是字符串.

$foo = array( $xml->channel->item->title );

我一直在这样做

$foo = array( sprintf("%s",$xml->channel->item->title) );

但这看起来很难看.

无论上下文如何,将SimpleXML对象强制转换为字符串的最佳方法是什么?



1> Aron Rotteve..:

将SimpleXMLObject强制转换为字符串:

$foo = array( (string) $xml->channel->item->title );

上面的代码在内部调用__toString()SimpleXMLObject.此方法不公开,因为它会干扰SimpleXMLObject的映射方案,但仍可以上述方式调用它.


请注意,使用接受字符串参数的函数将自动执行此类型转换(例如echo,str_replace,substr).
$ foo =(string)$ xml-> channel-> item-> title; 是我正在寻找的,因为我不需要阵列.谢谢.

2> Zaje..:

您可以使用PHP函数

strval();

此函数返回传递给它的参数的字符串值.


@Mark Biek:它确实适用于实现了`__toString()`的对象,特别是在这个问题的具体情况下,它适用于`SimpleXMLElement`类型的对象.您可以将其与接受的答案中的`string`进行比较.`strval()`是一个方便的回调函数,经常与[`array_map()`](http://php.net/array_map)和[`iterator_to_array($ simpleXMLElement,false)`]结合使用(http:// php .net/iterator_to_array)或`SimpleXMLElement :: xpath()`.

3> Mixed Case..:

有原生SimpleXML方法SimpleXMLElement :: asXML 根据参数,它将SimpleXMLElement写入xml 1.0文件或仅写入字符串:

$xml = new SimpleXMLElement($string);
$validfilename = '/temp/mylist.xml';
$xml->asXML($validfilename);    // to a file
echo $xml->asXML();             // to a string

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有