rapidxml比较节点值(测试值)

时间:2013-05-15 17:33:58

标签: c++ rapidxml

我是radidxml的新手,我找不到将节点值与字符串进行比较的方法。

我能想出的唯一方法是将其打印成字符串,然后测试该值。

if (cell_node->first_node("text:p")) {
  std::string test;
  print(test.begin(), *cell_node->first_node("text:p")->first_node(), 0);
  if (test[0] == '#') {
    std::cout << "TRUE";
    cell_node->first_node("text:p")->remove_first_node();
    rapidxml::xml_node<> *node3 = doc.allocate_node(
            rapidxml::node_data, 0, "append this one"
    );
    cell_node->first_node("text:p")->append_node(node3);
  }
}

还有其他方法吗?我希望:

cell_node->first_node("text:p")->first_node()->value() == "some string";

2 个答案:

答案 0 :(得分:0)

当然可以使用node->value()吗?

xml_node n = cell_node->first_node("text:p"); // don't keep calling first_node

if (n && (n->value()[0] == '#'))
{ 
  ...

它返回char*而不是std::string,因此请注意比较两个节点的值......

RapidXml手册在这里:http://rapidxml.sourceforge.net/manual.html - 大量简单的例子。

答案 1 :(得分:0)

获得节点后,可以调用name()将其名称作为指向字符串的指针。

if (0 == strcmp(node->name(), "#"))
{
    cout << "Found the # node!" << endl;
}