我通过 API 收集一些 xml 格式的数据,并希望将其反序列化到对象列表中。
我正在使用 Symfony2 并找到 JMSSerializerBundle 但我真的不知道如何使用它。
我知道 Sf2 允许将对象序列化到数组/从数组反序列化,但我正在寻找更具体的东西。
例如,对于此类:
class Screenshot
{
/**
* @var integer $id
*/
private $id;
/**
* @var string $url_screenshot
*/
private $url_screenshot;
public function __construct($id, $url_screenshot) {
$this->id = $id;
$this->url_screenshot = $url_screenshot;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set url_screenshot
*
* @param string $urlScreenshot
*/
public function setUrlScreenshot($urlScreenshot)
{
$this->url_screenshot = $urlScreenshot;
}
/**
* Get url_screenshot
*
* @return string
*/
public function getUrlScreenshot()
{
return $this->url_screenshot;
}
/**
* Serializes the Screenshot object.
*
* @return string
*/
public function serialize()
{
return serialize(array(
$this->id,
$this->url_screenshot
));
}
/**
* Unserializes the Screenshot object.
*
* @param string $serialized
*/
public function unserialize($serialized)
{
list(
$this->id,
$this->url_screenshot
) = unserialize($serialized);
}
public function __toString() {
return "id: ".$this->id
."screenshot: ".$this->url_screenshot;
}
}
我想对这种 xml 进行序列化/反序列化:
<?xml version="1.0" encoding="UTF-8" ?>
<screenshots>
<screenshot>
<id>1</id>
<url_screenshot>screenshot_url1</url_screenshot>
</screenshot>
<screenshot>
<id>2</id>
<url_screenshot>screenshot_url2</url_screenshot>
</screenshot>
<screenshot>
<id>3</id>
<url_screenshot>screenshot_url3</url_screenshot>
</screenshot>
</screenshots>
我真的很想使用一些集成的/集成到 Sf2 中的东西(“平滑”的东西)并且更喜欢避免任何自制的 xml 解析器。
由于 XML 的性质,您想要的东西是不可能的。您总是需要一些东西来翻译对象 -> xml 和 xml -> 对象。
我给你的建议是一个类,它作为集合工作并为你处理它,将对象列表作为属性,可以从 xml 输入创建并从现有对象创建 xml 输出。
另一种选择(如果您不再需要将其作为 xml 保存)是简单地序列化对象并以这种方式存储它们,或者如果您想要一次性将它们全部序列化,则序列化数组(或集合对象)。 PHP 中的普通 serialize() 和 unserialize() 函数就可以解决这个问题。由于它只是数据,因此您甚至不需要在类中使用序列化和反序列化方法。
Update:如果只是将 XML 放入对象中,那么 simplexml 已经可以满足您的需求了:http://www.php.net/manual/en/function.simplexml-load-string.php
第二个参数是类名。
Quote: 您可以使用此可选参数,以便 simplexml_load_string() 将返回指定类的对象。该类应该扩展 SimpleXMLElement 类。
如果这只是您的目标,那么 simplexml 已经做到了。
更新2:我已经阅读了捆绑包中的更多内容。它不做你想做的事。它获取一个对象并将其序列化为 XML/YAML,然后当然会从这些序列化状态再次反转该过程。它无法将一些随机的 XML 文件转变为适合您的完美对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)