2011-03-28 75 views
-1

大家好是我的問題,我想parsr一個XML文件,我只是想改變這樣的C++ XML文件解析問題

名 實體值MYNAME 我使用C++這是繼一碼

#include <string> 
#include <iostream> 
#include <sstream> 
#include <stdexcept> 
#include <list> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 
#include <errno.h> 
#include "/usr/local/include/xercesc/parsers/SAXParser.hpp" 
#include "/usr/local/include/xercesc/sax/HandlerBase.hpp" 
#include "/usr/local/include/xercesc/util/XMLString.hpp" 

using namespace std; 
using namespace xercesc; 

int main (int argc, char* args[]) { 
    XMLPlatformUtils::Initialize(); 
    char* xmlFile = "/home/manish/conf/mapred-site.xml"; 
    cout<<xmlFile ; 
    SAXParser* parser = new SAXParser(); 
    parser->setDoNamespaces(true); // optional 

    DocumentHandler* docHandler = new HandlerBase(); 
    ErrorHandler* errHandler = (ErrorHandler*) docHandler; 
    parser->setDocumentHandler(docHandler); 
    parser->setErrorHandler(errHandler); 

    parser->parse(xmlFile); 
    cout<<parser->getRootGrammar(); 


    delete parser; 
    delete docHandler; 
    return 0; 
} 

在我出來,我只是看到一個地址,我不知道現在要做什麼?如何使用這個地址? iit指向什麼?我應該怎麼做才能改變XML的參數文件我的XML文件是繼

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 

<!-- Put site-specific property overrides in this file. --> 

<configuration> 
<property> 
    <name>fs.default.name</name> 
    <value> name</value> 
    </property> 

</configuration> 

我只是想改變「名」在此文件「MYNAME」

有誰能夠告訴我如何做到這一點?

回答

0

如果這真的是你想要做的,爲什麼你不只是做幾個搜索和字符串替換:使用例如搜索「」標籤。 std::string::find。然後搜索下一個「」和「」標籤的位置。然後你可以例如使用std::string::replace

WRT上述代碼:正如我在previous answer中概述的那樣,您不能使用SAX來修改xml文檔。事實上,在你的代碼中,你甚至沒有爲你特定的xml文檔定義一個處理程序,所以你期望它如何工作?我建議你坐下來試着理解示例中的sax解析器示例。