在CProgram中解析XML文件中的特定元素

时间:2018-12-06 06:56:46

标签: c libxml2 pugixml

目前我正在通过c和c ++解析xml

im使用c ++中的pugixml库和c语言中的libxml2库来解析xml

假设我在xml中有根元素作为“配置”,并且它有4个子元素,分别是protocolversion,服务器名,daqlist和设备。

现在,我可以通过使用该根来获得根元素(配置),我想移动其特定的子代(设备)而不是一个一个地移动。

在使用pugixml的C ++中,我们有以下行直接从配置移至其子设备,     doc.child(“ Configuration”)。child(“ device”)。

在c语言中,通过使用libxml我只移动了一个孩子, 如果cur节点是根节点(配置),则即时通讯使用,  cur = cur-> children-> next-> next-> next-> next-> next-> next-> next-> next-> next(用于从配置移动到设备)

我不想接下来移动。 我想通过libxml将简单函数从当前移动到c中的特定节点。 有人可以帮助解决这个问题吗??

1 个答案:

答案 0 :(得分:0)

->next->next...方法假定节点的布局固定并且不可靠。我建议你:

  • 迭代孩子,直到找到一个
    • child->type == XML_ELEMENT_NODE
    • strcmp((char *)child->name, "device") == 0
    • xmlStrcmp(child->name, BAD_CAST "device") == 0
  • 使用XPath查找与/configuration/device匹配的节点