更好的选择是:直接解析XML或将XML转换为JSON,然后再进行解析


What will be a better option: parse XML directly or convert XML to JSON and then do the parsing?

我有XML作为字符串,我需要解析它,然后将值存储在数据库中。我有两种方法:

  • 解析XML
  • 将XML字符串转换为JSON(我将使用IBM的x-xml2jsonphp)

在效率和可维护性方面,什么是更好的方法,为什么?

将XML转换为JSON然后处理JSON几乎必然会更慢,因为您要进行解析,序列化,然后重新解析,这必然比解析花费更长的时间。

是否更简单和更易于维护完全取决于XML。如果使用名称空间和混合内容等特性,那么转换为JSON通常会(a)给您非常复杂的JSON来处理,或者(b)丢失应用程序可能需要的信息。(但我不知道你打算用哪个图书馆)。另一方面,如果它是非常简单的XML,那么您可能需要以这种方式编写更少的代码,这相当于更好的可维护性。

将XML转换为JSON需要放弃XML的一些结构,或者使用一组嵌套很深的JSON对象和数组。在第一种情况下,你丢掉了以后可能需要的信息;在第二种情况下,您创建了比XML更难以处理的东西。

无论哪种方式,一旦你转换成JSON,你就必须解析JSON以便实际使用它,就像你每次都必须解析XML一样,所以我能想到的没有真正的区别。

如果你正在使用PHP, SimpleXML(在我看来)是一个非常简洁的工具。重要的是要记住,它不仅仅是一个包含XML的大嵌套的数组,它还是一个访问数据的API。例如,你不必担心是否有一个<foo>子结点还是有几个,foreach ( $node->foo as $foo )总是有效的,echo $node->foo总是等同于echo $node->foo[0]

或者,正如在注释中提到的,还有其他XML api,它们可能更适合您的需求。但是,使用JSON,你基本上只能使用json_decode,然后处理大量的数据数组(一旦你解析了它,它就不再是JSON了);尽管您可能能够在某处找到帮助函数来深入PHP数组