目前正在通过c和c++解析xml
im使用c++中的puixml库和c中的libxml2库解析xml
假设xml中的根元素是"configuration",它有4个子元素,分别是protocolversion、servername、daklist和device。
现在我可以获得根元素(配置(,通过使用这个根,我想移动它的特定子元素(设备(,而不需要逐个移动。
在C++中,通过使用pugixml,我们可以直接从配置移动到它的子设备,doc.child("配置"(.child("设备"(.
在c中,通过使用libxml,我只需逐个移动子级,如果cur节点是root(配置(,则im使用,cur=cur->children->next->next->next->next->next->next->next(用于从配置移动到设备(
下一步我不想搬家。。我想要一个简单的函数通过libxml从c中的当前节点移动到特定节点。。有人能帮忙解决这个问题吗。。?
->next->next...
方法假定节点布局固定,并且不可靠。我建议你:
- 迭代子项,直到找到一个具有
child->type == XML_ELEMENT_NODE
和strcmp((char *)child->name, "device") == 0
- 或
xmlStrcmp(child->name, BAD_CAST "device") == 0
- 使用XPath查找与
/configuration/device
匹配的节点