簡體   English   中英

在 Linux 中使用終端將 XML 文件轉換為 C++

[英]Converting XML files to c++ using terminal in Linux

我將大量數據存儲為 XML 文件,我需要使用 Ubuntu 14.04 中的 gnome-terminal 將它們轉換為 C++。

最好的方法是什么? 有人建議編寫一個 shell 腳本來做到這一點,因為我們要處理大數據。

從 C++ 程序讀取 XML 數據文件的最佳方法是使用 XML 庫。 在 Internet 上搜索“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 字節數組。

在運行時,您可以將該無符號字符數組轉換回字符串(不要忘記附加一個空字符)。 然后使用我上面提到的XML庫來解析數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM