在Linux中使用终端将XML文件转换为c++
Converting XML files to c++ using terminal in Linux
我有大量的数据存储为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库来解析数据。
相关文章:
- Cppcheck生成xml转储文件
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- c++ 读取 xml 文件的内容
- 删除 XML 文件中的子节点C++
- 在Cmake构建CmakeList.txt中读取/解析XML文件
- 使用 libxml2 解析 XML 文件时缺少元素值
- 为什么TinyXML2的XMLDocument::FirstChild()函数在尝试解析这个有效的XML文件时返回NULL?
- 如何循环 n 次,在 xml 文件中每个循环一个级别
- 无法从 XML 文件中获取值
- 使用 RapidXML 解析大型 XML(大小大于 65 KB)文件时出现问题
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 使用 TinyXML2 读取 C++ 中的 XML 文件
- OPENCV - 如何在OpenCV中使用Haar Cascade Github xml文件?
- 我们如何重新制作程序以打开xml文件并在价格单词之后读取百分比值并更改此值
- 如何使用QXmlStreamReader解析包含对其他XML文件的引用的XML文件
- 如何解析列存储格式的XML文件
- 从文本文件/XML文件创建C++类
- 如何在QT中读取GPX文件(xml格式)
- 无法打开文件XML.XMLINTF.OBJ