Example #1
0
IXML_Node* xmldb_getMetaVariable(IXML_Element* obj, const char* name)
{
    IXML_Element* metaInfo = xmldb_getMetaInfo(obj);
    if (metaInfo == NULL)
    {
        return NULL;
    }

    // iterate through all meta tags until we find corresponding name
    IXML_Node* metaNode = ixmlNode_getFirstChild(ixmlElement_getNode(metaInfo));

    for (; metaNode != NULL; metaNode = ixmlNode_getNextSibling(metaNode))
    {
        IXML_Element* metaElement = ixmlNode_convertToElement(metaNode);
        if (metaElement == NULL)
        {
            // this piece of meta data is not an element - ignore it
            continue;
        }

        if (strcmp(ixmlElement_getTagName(metaElement), name) == 0)
        {
            return ixmlAttr_getNode(
                       ixmlElement_getAttributeNode(metaElement, OBIX_ATTR_VAL));
        }
    }

    // no meta tag with such name found
    return NULL;
}
Example #2
0
int L_getAttributeNode(lua_State *L)
{
	IXML_Attr *attr = ixmlElement_getAttributeNode(checkelement(L, 1), luaL_checkstring(L,2));
	if (attr == NULL)
		lua_pushnil(L);
	else
		pushLuaAttr(L, attr);
	return 1;
}
Example #3
0
IXML_Node* xmldb_putMetaVariable(IXML_Element* element,
                                 const char* name,
                                 const char* value)
{
    int error;
    IXML_Element* meta = xmldb_getMetaInfo(element);
    if (meta == NULL)
    {
        // create a new meta tag
        meta = ixmlElement_createChildElementWithLog(element, OBIX_META);
        if (meta == NULL)
        {
            log_error("Unable to create meta tag.");
            return NULL;
        }
    }

    // create new meta item
    IXML_Element* metaItem =
        ixmlElement_createChildElementWithLog(meta, name);
    if (metaItem == NULL)
    {
        log_error("Unable to create meta item.");
        return NULL;
    }

    // set meta item value
    error = ixmlElement_setAttribute(metaItem, OBIX_ATTR_VAL, value);
    if (error != IXML_SUCCESS)
    {
        log_error("Unable to create meta item. "
                  "ixmlElement_setAttribute() returned %d.", error);
        return NULL;
    }

    // return link to the created attribute
    return ixmlAttr_getNode(
               ixmlElement_getAttributeNode(metaItem, OBIX_ATTR_VAL));
}