MiniXml - mxmlFindElement()函数解析

详细教程

minixml常用函数接口:均需包含头文件#include mxml.h

查找节点

mxml_node_t *mxmlFindElement(mxml_node_t *node, mxml_node_t *top,const char *name, const char *attr,const char *value, int descend);

desc:
    node节点为被查找的结点
    top为顶层结点
    name, attrr, value为NULL时表示任意匹配; 否则为精确匹配。name :节点名 attrr:属性 value:属性值
    descend:参数有三个备选项
        MXML_NO_DESCEND含义是不查看任何的子节点在XML元素层次中, 仅查看同层级的节点或者父节点直到到达根节点或者top节点.
    	MXML_DESCEND_FIRST含义是向下搜索到一个节点的第一个匹配子节点, 但不再继续向下搜索。 你一般使用于遍历一个父节点的直接的子节点。
    	MXML_DESCEND含义是可以一直向下搜索.
存储模型

每个节点都有一些关联节点的指针,上(parent), 下( child), 左(prev), and 右(next) 相对应于当前节点. 如果你有一个XML文件如下所示:

    <?xml version="1.0"?>
    <data>
        <node>val1</node>
        <node>val2</node>
        <node>val3</node>
        <group>
            <node>val4</node>
            <node>val5</node>
            <node>val6</node>
        </group>
        <node>val7</node>
        <node>val8</node>
    </data>

那么在内存中的文件节点树看上去如下所示:

    ?xml
      |
    data
      |
    node - node - node - group - node - node
      |      |      |      |       |      |
    val1   val2   val3     |     val7   val8
                           |
                         node - node - node
                           |      |      |
                         val4   val5   val6

这里"-“指向下一个节点,”|"指向第一个子节点。

  • 实例:循环遍历val4、val5、val6、节点
    node =  mxmlFindElement(group,tree,"node",NULL,NULL,MXML_DESCEND);

    while(NULL != group){

        printf("%s\n",node->child->value.text.string);
        group = mxmlFindElement(node,tree,"node",NULL,NULL,MXML_NO_DESCEND);

    }

这里值得关注的是mxmlFindElement()的前两个参数和最后一个参数。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值