Exemple #1
0
void oss_list_objects_common_prefix_parse(aos_pool_t *p, xmlDocPtr doc, const char *xml_path,
            aos_list_t *common_prefix_list)
{
    int i = 0;
    xmlNodePtr cur_node;
    xmlNodeSetPtr nodeset = NULL;
    oss_list_object_common_prefix_t *common_prefix;
    xmlChar *xpath;
    xmlXPathObjectPtr result;
 
    xpath = (xmlChar*) xml_path;
    result = get_nodeset(doc, xpath);
    if (result == NULL)  {
        return;
    }
 
    nodeset = result->nodesetval;
 
    for ( ; i < nodeset->nodeNr; ++i) {
        common_prefix = oss_create_list_object_common_prefix(p);
        cur_node = nodeset->nodeTab[i]->xmlChildrenNode;
        oss_list_objects_prefix_parse(p, cur_node, common_prefix);
        aos_list_add_tail(&common_prefix->node, common_prefix_list);
    }
    xmlXPathFreeObject(result);
}
void oss_list_objects_common_prefix_parse(aos_pool_t *p, mxml_node_t *xml_node, const char *xml_path,
            aos_list_t *common_prefix_list)
{
    mxml_node_t *node;
    oss_list_object_common_prefix_t *common_prefix;

    node = mxmlFindElement(xml_node, xml_node, xml_path, NULL, NULL, MXML_DESCEND);
    for ( ; node != NULL; ) {
        common_prefix = oss_create_list_object_common_prefix(p);
        oss_list_objects_prefix_parse(p, node, common_prefix);
        aos_list_add_tail(&common_prefix->node, common_prefix_list);
        node = mxmlFindElement(node, xml_node, xml_path, NULL, NULL, MXML_DESCEND);
    }
}