【问题标题】:Convert xml to MAP in php using simplexml, NOT json在 php 中使用 simplexml 将 xml 转换为 MAP,而不是 json
【发布时间】:2014-03-27 04:01:01
【问题描述】:

我试图弄清楚如何获取一个简单的自定义 xml 文件(它实际上是一个 EML 文件,但 simpeXML 无论如何都可以使用它)并获取标记名和随后的文本(我认为 simpleXML 称它们为子文件)并放入将它们放入带有键/值对的 MAP 中。我已经查看了该站点上的一些示例以及其他有关转换为数组等的示例,但是对于我的需求来说,它们似乎都非常复杂。我应该注意,我的自定义 xml 不包含任何属性,并且这种转换只需要与我的自定义 xml 文件一起使用,而不是任何其他文件。

所以这里是我的 eml 文件的一个简单示例

<lesson>
<unit>4</unit>
</lesson>

那么基本上我想要的是一个 MAP,或者任何在 php 中调用的键/值集合,这会给我:

Map[0](lesson,null) 
Map[1](unit,4) 

获取空值(或者空字符串也可以)很重要,因此我可以验证 eml 文件是否有效。我需要使用 php 来验证它,而不是使用命名空间验证器或 dtd 文件,或者这样做。所以第一个键/值对,或者根标签,必须是教训,然后我还要验证是否有一个单元标签,然后是一个标题标签,然后是至少一个其他类型的标签等等......我可以如果我可以将所有内容都放入键/值集合中,那就很容易了。此外,有许多相同的标记名,因此键不应该是唯一的。但是对于值,它们应该是唯一的,但仅限于标签名称。所以单元只能有一个“4”,但另一个标签,比如 imageID 也可以有“4”。这不是一个要求,而是一个“很高兴拥有”,如果它不简单,我可能会弄清楚。但如果真的很难,我会​​一起跳过。

我希望这是有道理的。

不,我认为我不允许使用 json。我确信它可以在 simpleXMl 中完成,但如果它不可能,那么请提供一种在 json 中完成的方法(假设 json 包含在 PHP 中,而不是必须加载的扩展)。

这是大学作业,所以我不能使用扩展程序或任何其他需要 XAMPP 基本软件包(php、mysql、apache 等)之外的任何东西的东西。

【问题讨论】:

    标签: php xml map simplexml


    【解决方案1】:

    真的很惊讶我没有得到任何投票或意见或答案或任何关于此的内容。我最终确实弄清楚了这一点。哦,是的……也为此获得了风滚草徽章!

    不管怎样,答案其实很简单。我在 PHP 中使用了 simplexml_load_file 函数,它实际上支持任何类型的 xml 样式。所以运行这个之后,

    $eml = simplexml_load_file("unit.eml");
    

    然后我做了这样的事情

    foreach ($eml->children() as $child)
        $tag = $child->getName();
    $tagInfo = $child;
    

    并使用 $tag 和 $tagInfo 遍历我的 eml 并获得我需要的一切。

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 2015-02-22
      • 2012-02-02
      • 1970-01-01
      • 2012-02-08
      • 2015-02-24
      • 2021-07-01
      • 2018-07-30
      • 2016-04-11
      相关资源
      最近更新 更多