예제 #1
0
파일: node.c 프로젝트: dreamer-dead/myxml
mxml_node * node_identify( void * doc, const mxml_char_t * str, parsing_context *ctx )
{	
	mxml_node * doc_node = (mxml_node *)doc;
	mxml_node * ident_node = NULL;

	UNUSED_ARG( ctx );

	if ( !doc_node )
		return NULL;
	
	if ( is_declaration ( str ) )
		ident_node = create_declaration( doc_node );
	else if ( is_comment( str ) )
		ident_node = create_comment( doc_node );
	else if ( is_unknown( str ) )
		ident_node = create_unknown( doc_node );
	else if ( is_element( str ) )
		ident_node = create_element( XML_T(""), doc_node );
	else if ( is_text( str ) )
		ident_node = create_text( doc_node );
	else 
		ident_node = create_unknown( doc_node );

	return ident_node;
}
예제 #2
0
static int read_msg_actions(xmlNode *an, cp_actions_t **dst)
{
	xmlNode *n;
	const char *s;
	int res = RES_OK;
	if ((!an) || (!dst)) return RES_INTERNAL_ERR;
	
	*dst = (cp_actions_t*)cds_malloc(sizeof(cp_actions_t));
	if (!(*dst)) return RES_MEMORY_ERR;
	memset(*dst, 0, sizeof(cp_actions_t));

	n = find_node(an, "im-handling", msg_rules_ns);
	if (n) {
		/* may be only one sub-handling node? */
		s = get_node_value(n);
		(*dst)->unknown = create_unknown(sizeof(msg_handling_t));
		if (!(*dst)->unknown) return RES_MEMORY_ERR;
		res = str2msg_handling(s, (msg_handling_t*)(*dst)->unknown->data);
	}

	return res;
}