在Linux中使用终端将XML文件转换为c ++

时间:2015-11-10 19:09:52

标签: c++ xml ubuntu

我将大数据存储为XML文件,我需要使用Ubuntu 14.04中的gnome-terminal将它们转换为C ++。

最好的方法是什么?有人建议写一个shell脚本来处理大数据。

2 个答案:

答案 0 :(得分:1)

从C ++程序读取XML数据文件的最佳方法是使用XML库。在互联网上搜索" C ++ XML库"。

答案 1 :(得分:1)

选项1 - 将数据保留在XML文件中并在运行时将其读出。 (推荐)

您可能想要做的是将XML文件保留在磁盘上,然后编写程序以在运行时读取这些文件。也许这些XML文件的文件名可以作为命令行传递给您的程序。

然后你的程序"读取"这些XML文件并将它们解析为树结构。有许多现有的XML库可以为您进行所有繁重的解析。一个这样的库是libxml。然后你的天体物理学代码就会分析你的数据。

选项2 - "使用xxd -i"将XML转换为C资源文件。

如果您绝对想要将XML转换为C ++代码,那么我能为您提供的最好的是带有xxd选项的-i命令。这将把文件转换为C代码中的无符号字符数组。例如:

ubuntu@ip-10-0-0-15:~$ cat foo.xml                                                                                   
<foo>                                                                                                                
   <data>This is some data</data>                                                                                    
</foo>                                                                                                               
ubuntu@ip-10-0-0-15:~$ xxd -i foo.xml                                                                                
unsigned char foo_xml[] = {0x3c, 0x66, 0x6f, 0x6f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x61, 0x3e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x3e, 0x0a, 0x3c, 0x2f, 0x66, 0x6f, 0x6f, 0x3e, 0x0a};
unsigned int foo_xml_len = 47;  

unsigned char数组foo_xml是原始文件的ascii字节数组。

在运行时,您可以将unsigned char数组转换回字符串(不要忘记附加null char)。然后使用我上面提到的XML库来解析数据。