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

Converting XML files to c++ using terminal in Linux

本文关键字:文件 XML 转换 c++ 终端 Linux      更新时间:2023-10-16

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

最好的方法是什么?有人建议写一个shell脚本来实现这一点,因为我们处理的是大数据。

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

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

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

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

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

如果您绝对想将XML转换为C++代码,那么我能为您提供的最好的方法就是带有-i选项的xxd命令。这将把一个文件变成一个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;  

无符号字符数组foo_xml是原始文件的ascii字节数组。

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