我是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";
答案 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;
}