使用 Symfony2 将 xml 反序列化为对象

2023-12-13

我通过 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(使用前将#替换为@)

使用 Symfony2 将 xml 反序列化为对象 的相关文章

  • 如何将 Filesystem 类的 glob 方法与 StorageFacade 结合使用?

    这涉及到拉拉维尔 5 我可以看到Illuminate Filesystem Filesystem一个方法叫做glob pattern flags 0 不幸的是 这个方法并没有体现在默认的情况下FilesystemAdapter随 Larav
  • 基于 PHP 的 CSV 编辑器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道用 PHP 编写的在线 CSV 编辑器允许用户打开 编辑和保存给定的 CSV 文件 我能找到的只
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • 如何在 Laravel 5.5 中编辑“页面因不活动而已过期”的视图

    在 Laravel 5 5 中 当您使用 CSRF 保护 默认情况下 并且在长时间不活动后发送发布请求时 您将收到此错误页面 屏幕截图 我对此错误表示同意 但是 我需要更改此错误的视图 文本以确保与我的应用程序风格和语言相匹配 关于如何编辑
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • 使用 php 将 HLS Segment (ts) 视频转换并加入到 mp4

    你好我正在使用这个工具 https github com Ejz HLSDownloader https github com Ejz HLSDownloader将 HLS 视频片段从 m3u8 播放列表下载到 ts 文件中 不 我不知道如
  • 无法使用 Symfony2 和 TinyMCE 提交表单

    我有一个带有由 TinyMCE Javascript 库丰富的文本区域的表单 当启用 Javascript 库时 如果我按下提交按钮 页面不会改变 如果我禁用该库 一切正常 人们可能会发现该库没有正确使用 我使用的是来自傻瓜教程 http
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 使用 XML 文档部署 Web API 项目时,构建服务器上“访问被拒绝”

    为了使用 Web API 帮助页面为我的 Web API 项目生成 XML 文档 我必须检查项目属性的 构建 部分下的 XML 文档文件 选项 当我在本地构建时 这会正确生成文档 但是 当我签入时 我在构建服务器上收到以下错误 CSC 生成
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • 无需下载整个文件即可读取 ID3 标签

    是否可以读取 MP3 文件的 ID3 标签 持续时间 艺术家 标题 而无需下载整个文件 我做了一些测试 只需下载 MP3 文件的几个字节就可以获得艺术家和标题标签 但我不确定持续时间和其他标签是否可能 Thanks 我刚刚发现 ffmpeg
  • 从多个选择列表中插入数据到mysql数据库(html形式)

    我制作了一个表格 其中有商店的 ID
  • php向多个收件人发送邮件

    我可以通过在邮件程序中定义 id 来将电子邮件发送到一个电子邮件 id 但是当用户在表单中键入 消息和电子邮件 id 时 我无法理解如何发送到多个收件人 例如 我正在显示一个带有两个文本区域的表单 一个用于电子邮件 ID 一个用于自定义消息
  • WordPress 事件按元生效日期排序

    我在获取参数数组以按 Wordpress 中的日期对事件列表进行排序时遇到一些问题 我在 Stack Overflow 和其他地方找到了几个建议的解决方案 但经过大量的试验和错误后 这些解决方案似乎都不起作用 这没什么花哨的 而且应该比这容
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • 处理查询字符串参数时 Codeigniter 缓存问题

    问候 我正在编写一个 CI Web 应用程序 它实现标准文件缓存功能 如下所示 this gt output gt cache n 我使用了段和查询字符串参数的组合 因此似乎遇到了问题 我在用例和输出类代码中看到的是 缓存仅基于段 像这样
  • SQL Server XQuery 返回错误

    我正在 SQL Server 2012 中对 XML 数据类型列执行查询 数据示例如下

随机推荐

  • 无法在 XNA 中隐式转换类型

    我有一个弹跳球 我试图让它弹跳一次时 速度会变得更高 在我的球课上 我有一个float speed 我初始化了它 public ball float speed speed 1f 我有一个球运动的方法 如下所示 public void Ba
  • Firebase 注销不起作用

    我已经开始使用 Firebase 但我的体验很糟糕 我无法注销用户 我尝试了不同的方法 花了 4 天的时间来弄清楚如何注销用户 但没有明确的选项 我想完全指出用户 以便他们可以选择另一个 gmail 帐户 我试过下面的代码 Firebase
  • AWS Lex - 默认插槽类型没有限制

    在 AWS Lex 中 我使用默认的 AMAZON Country 作为槽类型 但是 当我与测试机器人交互时 我可以输入任何值 例如 我不知道 并且当我检查响应时 JSON 表示 国家 地区 的值为 我不知道 槽类型的目的是将答案限制为现有
  • 在 Tensorflow 数据集 api 中:如何使用 padded_batch 以便在不指定 pad 数量的情况下使 pad 具有特定值

    如果您不指定padding values then padded batch将自动填充 0 但是 如果您想要不同的值 例如 1 则不能只设置padded batch 1 您需要为每个需要填充的槽输入一个序列 但是 我正在使用一个数据集 该数
  • C# Regex 使用函数进行匹配和替换

  • 为什么 Google Fit 步数不同

    我使用 Sensor API 来计算步数 我发现它与 Google Fit 应用程序不同 Google Fit 应用程序是否使用 Sensor API 其他功能 代码片段 Fitness SensorsApi add mGoogleApiF
  • 如何在输入文本字段中仅允许阿拉伯字符?

    我已经在这里搜索并找到了与这篇文章相关的类似帖子 但我还没有找到解决方案 我试过这个 text hello echo is arabic preg match p Arabic u text 我添加了 unicode 标志 但如果我添加任何
  • 即使对于简单的整数值,if 语句也始终返回 true

    我面临的问题是 对于每个值 我的 If 语句始终返回 true var radioValue parseInt input name packageRadio checked val alert radioValue 1000 500 1
  • 从 UIImagePickerController 获取 NSURL

    我试图获取通过 uiimagePickerController 选择的图像的文件路径 以便将文件上传到 Firebase 存储 func imagePickerController picker UIImagePickerControlle
  • 寻找最后一个符合条件的单元格(水平)

    我试图在 Google Sheets 中找到一种方法来根据某些条件返回最后一个单元格 我已包含下表 Jan Feb March April LATEST SALE group 1 sale sale no sale sale April g
  • 适用于 Java 和 Javascript 的兼容 AES 算法

    我需要使用 AES 算法加密 Java 应用程序中的一些值 并在应用程序的 Javascript 模块中解密相同的值 我在互联网上看到了一些示例 但兼容性似乎存在一些差异 就像下面的问题 javascript中的AES加密和java中的解密
  • 将绝对位置转换为相对位置

    是否可以将 DIV 位置从绝对位置更改为相对位置 以及从相对位置更改为绝对位置 DIV 应保留在同一位置 因为评论中的格式不起作用 我将在这里发布解决方案 object css position absolute top dy left d
  • Web 服务器的 .cgi 问题

    The code usr bin env python import MySQLdb print Content Type text html print print print print h1 Books h1 print ul con
  • sparql:为每个节点随机选择一个连接

    我有以下数据
  • 我有 DEVINST,我需要设备路径

    我正在尝试打开属于复合设备一部分的 WinUSB 设备 我已使用 cfgmgr32 找到了正确的子设备 并有其 DEVINST 编号 为了使用 WinUSB 打开它 我需要首先调用 CreateFile 为此我需要设备路径 设备路径如下所示
  • 如何使用 Web 服务访问 Sharepoint 中的子站点列表?

    在尝试使用 Web 服务 在 powershell 上 访问我的共享点网站时 我遇到了以下配置的问题 我的网站位于https sharepoint company tld sites siteid WSDL 是从以下位置获取的https s
  • 如何在 yii 中安装 bootstrap 扩展

    我是 yii 的新手 一直在尝试向 yii 添加 bootstrap 和 giiplus 扩展 但是 在将提取的文件添加到扩展文件夹并在 main php 中进行更改后 我似乎无法在显示主页时出现错误 我按照这个教程 http www cn
  • 拆分值对并使用 UDF 创建表

    我一直在尝试编写一个表值函数 它将值对作为参数并返回一个包含两列的表 下面是我想要做的函数签名 FUNCTION dbo ValuePairParser DelimitedValuePairs VARCHAR MAX Delimiter C
  • 将onclick添加到UI材质按钮

    我正在尝试将 onClick 事件处理程序添加到材质 ui 中 有时会调用它 有时不会 但是 它与常规按钮一起工作正常 handleClick event gt const value event target value console
  • 使用 Symfony2 将 xml 反序列化为对象

    我通过 API 收集一些 xml 格式的数据 并希望将其反序列化到对象列表中 我正在使用 Symfony2 并找到 JMSSerializerBundle 但我真的不知道如何使用它 我知道 Sf2 允许将对象序列化到数组 从数组反序列化 但