c ++ XML文件解析问题

时间:2011-03-28 04:03:20

标签: c++ xml

大家好,这里是我的问题我想解析一个xml文件,我只是想改变一个像这样的实体值

名字 到我的名字 我用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;
}

在我的外面,我刚看到一个地址,我不知道该怎么办?如何使用这个地址?我指的是什么?我该怎么做才能更改我的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>

我只想在此文件中将“name”更改为“myname”

谁能告诉我怎么做?

1 个答案:

答案 0 :(得分:0)

如果您真的想做什么,为什么不进行一些搜索和字符串替换:使用例如搜索“”标签std::string::find。然后搜索下一个“”和“”标签的位置。然后你可以,例如使用std::string::replace

WRT上面的代码:正如我在previous answer中概述的那样,你不能使用SAX来修改xml文档。事实上,在您的代码中,您甚至没有为特定的xml文档定义处理程序,那么您希望它如何工作?我建议你坐下来尝试理解示例中的sax解析器示例。