2011-03-28 69 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解析器示例。