0

我是 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";
4

2 回答 2

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 - 大量简单示例。

于 2013-05-17T21:10:36.673 回答
0

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

if (0 == strcmp(node->name(), "#"))
{
    cout << "Found the # node!" << endl;
}
于 2014-02-26T06:33:50.007 回答