如何将大型json文件转换为xml

时间:2016-01-07 23:03:57

标签: json xml converter

我有非常大的.json文件(超过5GB),我想将其转换为.xml格式。是否有任何软件或方式(可以是一切)?

我找到了XML Editor

但只有xml => json转换器。

2 个答案:

答案 0 :(得分:1)

处理XML和JSON文件的典型方法是将这些文件完全加载到内存中。然后你有一个所谓的DOM,它允许你进行各种数据处理。但是,XML和JSON都不是真的用于存储你在这里拥有的那么多数据。根据我的经验,一旦超过200 MB的限制,通常会遇到内存问题。这是因为创建了由单个对象组成的DOM。这种方法会导致巨大的内存开销,远远超过您想要处理的数据量。

处理这样的文件的唯一方法基本上是采用流方法。基本思想:不是解析整个文件并将其加载到内存中,而是解析并处理文件"即时#34;。在读取数据时,它会被解析并触发事件,您的软件可以根据需要做出反应并执行某些操作。 (有关详细信息,请查看SAX API以更详细地了解此概念。)

正如您所说,您正在处理JSON,而不是XML。 JSON的流API也应该可以在野外使用。无论如何,你可以自己轻松地实现一个:JSON是一种非常简单的数据格式。

然而,这种方法并不是最优的:通常这样的概念会导致数据处理速度非常慢,因为涉及到数百万个方法调用:对于遇到的每个项目,您通常需要调用一个方法来执行某些数据处理任务。这与对您当前在流中遇到的信息类型的额外检查一起将大大减慢数据处理速度。

你真的应该考虑使用另一种方法。首先将文件拆分成许多小文件,然后对它们执行处理。这种方法似乎不是很优雅,但它有助于使您的任务更简单。这样您就获得了一个主要优势:您可以更轻松地调试软件。

答案 1 :(得分:1)

如果您愿意使用PEAR中的XML Serializer,您可以通过两个简单的步骤将JSON转换为PHP对象,然后将PHP对象转换为XML:

点击此链接了解更多信息

convert json to xml

一个小例子

include("XML/Serializer.php");

function json_to_xml($json) {
    $serializer = new XML_Serializer();
    $obj = json_decode($json);

    if ($serializer->serialize($obj)) {
        return $serializer->getSerializedData();
    }
    else {
        return null;
    }
}
祝你好运并尝试