2009-11-29 19 views
1

我有100個MB的大型XML文件。在大型XML文件中轉義字符

是否有任何實用程序可以解析XML文件並在沒有將整個文件一次打開到內存的情況下轉義字符串中的特殊字符?

謝謝

回答

1

下面的c + +程序逐字節複製一個文件,它使用很少的內存(這使得它有點慢)。 您可以通過不經常刷新到ou​​tfile來提高性能。

// copy a file using associated buffer's members 
#include <fstream> 
using namespace std; 

int main() { 
    char ch; 
    ifstream infile; 
    ofstream outfile; 

    infile.open ("original.xml",std::ifstream::binary); 
    outfile.open ("copy.xml",std::ofstream::binary); 

    while (!infile.eof()) 
    { 
     infile >> ch; 
     outfile << ch; 
     outfile.flush(); 
    } 

    outfile.close(); 
    infile.close(); 

    return 0; 
} 

如果你想要一個unix工具,我想你可以使用sed

+0

謝謝,我會看看我是否可以用它來破解一些東西。 – 2009-11-30 00:02:24

+0

sed不是適用於此的工具。 – ghostdog74 2009-11-30 01:27:08

+0

這只是一個文件複製程序,而不是XML解析器。 – 2009-11-30 03:27:23

2

在Java中,不要使用DOM。使用SAX或StaX。如果不在Java中,您仍然可以使用SAX或MSXML或Expat。

+0

或者libxml的其他地方:http://xmlsoft.org/ – 2009-11-29 23:11:08

+0

VTD -xml或擴展的VTD-XML – 2009-11-30 00:50:39

1

SAX,如果你做的東西是很簡單的StAX可以正常工作,否則,VTD-XML是最好的選擇

Introduction to VTD-XML

+1

+1有趣的參考。 – 2009-11-30 03:43:52

+0

爲什麼不舉一個使用VTD-XML解決問題的例子? – 2009-12-04 04:27:29

+0

你有沒有看到引用文章的參考? – 2009-12-04 09:16:12