本文整理汇总了C++中rxml_node_wrap函数的典型用法代码示例。如果您正苦于以下问题:C++ rxml_node_wrap函数的具体用法?C++ rxml_node_wrap怎么用?C++ rxml_node_wrap使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rxml_node_wrap函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rxml_node_child_set_aux
/*
* underlying for child_set and child_add, difference being
* former raises on implicit copy, latter does not.
*/
static VALUE rxml_node_child_set_aux(VALUE self, VALUE rnode)
{
xmlNodePtr pnode, chld, ret;
if (rb_obj_is_kind_of(rnode, cXMLNode) == Qfalse)
rb_raise(rb_eTypeError, "Must pass an XML::Node object");
Data_Get_Struct(self, xmlNode, pnode);
Data_Get_Struct(rnode, xmlNode, chld);
if (chld->parent != NULL || chld->doc != NULL)
rb_raise(
rb_eRuntimeError,
"Cannot move a node from one document to another with child= or <<. First copy the node before moving it.");
ret = xmlAddChild(pnode, chld);
if (ret == NULL)
{
rxml_raise(&xmlLastError);
}
else if (ret == chld)
{
/* child was added whole to parent and we need to return it as a new object */
return rxml_node_wrap(cXMLNode, chld);
}
/* else */
/* If it was a text node, then ret should be parent->last, so we will just return ret. */
return rxml_node_wrap(cXMLNode, ret);
}
示例2: rxml_node_prev_get
/*
* call-seq:
* node.prev -> XML::Node
*
* Obtain the previous sibling, if any.
*/
static VALUE rxml_node_prev_get(VALUE self)
{
xmlNodePtr xnode;
xmlNodePtr node;
xnode = rxml_get_xnode(self);
switch (xnode->type)
{
case XML_DOCUMENT_NODE:
#ifdef LIBXML_DOCB_ENABLED
case XML_DOCB_DOCUMENT_NODE:
#endif
case XML_HTML_DOCUMENT_NODE:
case XML_NAMESPACE_DECL:
node = NULL;
break;
case XML_ATTRIBUTE_NODE:
{
xmlAttrPtr attr = (xmlAttrPtr) xnode;
node = (xmlNodePtr) attr->prev;
}
break;
default:
node = xnode->prev;
break;
}
if (node == NULL)
return (Qnil);
else
return (rxml_node_wrap(node));
}
示例3: rxml_node_new_pi
/*
* call-seq:
* XML::Node.new_pi(name, content = nil) -> XML::Node
*
* Create a new pi node, optionally setting
* the node's content.
*
*/
static VALUE rxml_node_new_pi(int argc, VALUE *argv, VALUE klass)
{
VALUE name = Qnil;
VALUE content = Qnil;
xmlNodePtr xnode;
rb_scan_args(argc, argv, "11", &name, &content);
if (NIL_P(name))
{
rb_raise(rb_eRuntimeError, "You must provide me with a name for a PI.");
}
name = rb_obj_as_string(name);
if (NIL_P(content))
{
xnode = xmlNewPI((xmlChar*) StringValuePtr(name), NULL);
}
else
{
content = rb_obj_as_string(content);
xnode = xmlNewPI((xmlChar*) StringValuePtr(name), (xmlChar*) StringValueCStr(content));
}
if (xnode == NULL)
rxml_raise(&xmlLastError);
return rxml_node_wrap(xnode);
}
示例4: rxml_reader_expand
/*
* call-seq:
* reader.expand -> node
*
* Returns the current node and its full subtree. Note the returned node
* is valid ONLY until the next read call.
*/
static VALUE rxml_reader_expand(VALUE self)
{
xmlTextReaderPtr xreader = rxml_text_reader_get(self);
xmlNodePtr xnode = NULL;
/* At this point we need to wrap the reader's document as explained above. */
xmlDocPtr xdoc = xmlTextReaderCurrentDoc(xreader);
if (!xdoc)
rb_raise(rb_eRuntimeError, "The reader does not have a document. Did you forget to call read?");
rxml_document_wrap(xdoc);
/* And now hook in a mark function */
RDATA(self)->dmark = (RUBY_DATA_FUNC)rxml_reader_mark;
xnode = xmlTextReaderExpand(xreader);
if (!xnode)
{
return Qnil;
}
else
{
return rxml_node_wrap(xnode);
}
}
示例5: rxml_attr_parent_get
/*
* call-seq:
* attr.parent -> node
*
* Obtain this attribute node's parent.
*/
static VALUE rxml_attr_parent_get(VALUE self)
{
xmlAttrPtr xattr;
Data_Get_Struct(self, xmlAttr, xattr);
if (xattr->parent == NULL)
return Qnil;
else
return rxml_node_wrap(xattr->parent);
}
示例6: rxml_attr_child_get
/*
* call-seq:
* attr.child -> node
*
* Obtain this attribute's child attribute(s).
*/
static VALUE rxml_attr_child_get(VALUE self)
{
xmlAttrPtr xattr;
Data_Get_Struct(self, xmlAttr, xattr);
if (xattr->children == NULL)
return Qnil;
else
return rxml_node_wrap((xmlNodePtr) xattr->children);
}
示例7: rxml_document_child_get
/*
* call-seq:
* document.child -> node
*
* Get this document's child node.
*/
static VALUE rxml_document_child_get(VALUE self)
{
xmlDocPtr xdoc;
Data_Get_Struct(self, xmlDoc, xdoc);
if (xdoc->children == NULL)
return (Qnil);
return rxml_node_wrap(xdoc->children);
}
示例8: rxml_parser_context_node_get
/*
* call-seq:
* context.node -> node
*
* Obtain the root node of this context.
*/
static VALUE rxml_parser_context_node_get(VALUE self)
{
xmlParserCtxtPtr ctxt;
Data_Get_Struct(self, xmlParserCtxt, ctxt);
if (ctxt->node == NULL)
return (Qnil);
else
return (rxml_node_wrap(ctxt->node));
}
示例9: rxml_node_first_get
/*
* call-seq:
* node.first -> XML::Node
*
* Returns this node's first child node if any.
*/
static VALUE rxml_node_first_get(VALUE self)
{
xmlNodePtr xnode;
xnode = rxml_get_xnode(self);
if (xnode->children)
return (rxml_node_wrap(xnode->children));
else
return (Qnil);
}
示例10: rxml_node_parent_get
/*
* call-seq:
* node.parent -> XML::Node
*
* Obtain this node's parent node, if any.
*/
static VALUE rxml_node_parent_get(VALUE self)
{
xmlNodePtr xnode;
xnode = rxml_get_xnode(self);
if (xnode->parent)
return (rxml_node_wrap(xnode->parent));
else
return (Qnil);
}
示例11: rxml_node_parent_get
/*
* call-seq:
* node.parent -> XML::Node
*
* Obtain this node's parent node, if any.
*/
static VALUE rxml_node_parent_get(VALUE self)
{
xmlNodePtr xnode;
Data_Get_Struct(self, xmlNode, xnode);
if (xnode->parent)
return (rxml_node_wrap(xnode->parent));
else
return (Qnil);
}
示例12: rxml_node_first_get
/*
* call-seq:
* node.first -> XML::Node
*
* Returns this node's first child node if any.
*/
static VALUE rxml_node_first_get(VALUE self)
{
xmlNodePtr xnode;
Data_Get_Struct(self, xmlNode, xnode);
if (xnode->children)
return (rxml_node_wrap(xnode->children));
else
return (Qnil);
}
示例13: rxml_schema_type_node
static VALUE rxml_schema_type_node(VALUE self)
{
xmlSchemaTypePtr xtype;
Data_Get_Struct(self, xmlSchemaType, xtype);
if(xtype->node != NULL)
return rxml_node_wrap(xtype->node);
else
return Qnil;
}
示例14: rxml_node_new_text
/*
* call-seq:
* XML::Node.new_text(content) -> XML::Node
*
* Create a new text node.
*
*/
static VALUE rxml_node_new_text(VALUE klass, VALUE content)
{
xmlNodePtr xnode;
Check_Type(content, T_STRING);
content = rb_obj_as_string(content);
xnode = xmlNewText((xmlChar*) StringValueCStr(content));
if (xnode == NULL)
rxml_raise(&xmlLastError);
return rxml_node_wrap(xnode);
}
示例15: rxml_document_root_get
/*
* call-seq:
* document.root -> node
*
* Obtain the root node.
*/
static VALUE rxml_document_root_get(VALUE self)
{
xmlDocPtr xdoc;
xmlNodePtr root;
Data_Get_Struct(self, xmlDoc, xdoc);
root = xmlDocGetRootElement(xdoc);
if (root == NULL)
return (Qnil);
return rxml_node_wrap(root);
}