/** * gupnp_didl_lite_item_get_ref_id: * @item: #GUPnPDIDLLiteItem * * Get the ref ID of the @item. * * Return value: The ref ID of the @item, or %NULL. **/ const char * gupnp_didl_lite_item_get_ref_id (GUPnPDIDLLiteItem *item) { xmlNode *xml_node; g_return_val_if_fail (item != NULL, 0); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_ITEM (item), NULL); xml_node = gupnp_didl_lite_object_get_xml_node (GUPNP_DIDL_LITE_OBJECT (item)); return xml_util_get_attribute_content (xml_node, "refID"); }
/** * gupnp_didl_lite_item_set_ref_id: * @item: #GUPnPDIDLLiteItem * @refid: The ref ID * * Set the ref ID of the @item. **/ void gupnp_didl_lite_item_set_ref_id (GUPnPDIDLLiteItem *item, const char *ref_id) { xmlNode *xml_node; g_return_if_fail (item != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_ITEM (item)); xml_node = gupnp_didl_lite_object_get_xml_node (GUPNP_DIDL_LITE_OBJECT (item)); xmlSetProp (xml_node, (unsigned char *) "refID", (unsigned char *) ref_id); g_object_notify (G_OBJECT (item), "ref-id"); }
static gboolean parse_elements (GUPnPDIDLLiteParser *parser, xmlNode *node, GUPnPAVXMLDoc *xml_doc, xmlNs *upnp_ns, xmlNs *dc_ns, xmlNs *dlna_ns, xmlNs *pv_ns, gboolean recursive, GError **error) { xmlNode *element; for (element = node->children; element; element = element->next) { GUPnPDIDLLiteObject *object; object = gupnp_didl_lite_object_new_from_xml (element, xml_doc, upnp_ns, dc_ns, dlna_ns, pv_ns); if (object == NULL) continue; if (GUPNP_IS_DIDL_LITE_CONTAINER (object)) { g_signal_emit (parser, signals[CONTAINER_AVAILABLE], 0, object); if (recursive && !parse_elements (parser, element, xml_doc, upnp_ns, dc_ns, dlna_ns, pv_ns, recursive, error)) { g_object_unref (object); return FALSE; } } else if (GUPNP_IS_DIDL_LITE_ITEM (object)) { node = gupnp_didl_lite_object_get_xml_node (object); if (!verify_didl_attributes (node)) { g_object_unref (object); g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE, "Could not parse DIDL-Lite XML"); return FALSE; } g_signal_emit (parser, signals[ITEM_AVAILABLE], 0, object); } g_signal_emit (parser, signals[OBJECT_AVAILABLE], 0, object); g_object_unref (object); } return TRUE; }