class LibXML::XML::XPath::Object
A collection of nodes returned from the evaluation of an XML::XPath or XML::XPointer expression.
Attributes
Public Instance Methods
array index into set of nodes
static VALUE rxml_xpath_object_aref(VALUE self, VALUE aref)
{
rxml_xpath_object *rxpop;
if (rxml_xpath_object_empty_q(self) == Qtrue)
return Qnil;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
return rxml_xpath_object_tabref(rxpop->xpop, NUM2INT(aref));
}
Dump libxml debugging information to stdout. Requires Libxml be compiled with debugging enabled.
static VALUE rxml_xpath_object_debug(VALUE self)
{
#ifdef LIBXML_DEBUG_ENABLED
rxml_xpath_object *rxpop;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
xmlXPathDebugDumpObject(stdout, rxpop->xpop, 0);
return Qtrue;
#else
rb_warn("libxml was compiled without debugging support.");
return Qfalse;
#endif
}
Call the supplied block for each node in this set.
static VALUE rxml_xpath_object_each(VALUE self)
{
rxml_xpath_object *rxpop;
int i;
if (rxml_xpath_object_empty_q(self) == Qtrue)
return Qnil;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
for (i = 0; i < rxpop->xpop->nodesetval->nodeNr; i++)
{
rb_yield(rxml_xpath_object_tabref(rxpop->xpop, i));
}
return (self);
}
Determine whether this nodeset is empty (contains no nodes).
static VALUE rxml_xpath_object_empty_q(VALUE self)
{
rxml_xpath_object *rxpop;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
if (rxpop->xpop->type != XPATH_NODESET)
return Qnil;
return (rxpop->xpop->nodesetval == NULL || rxpop->xpop->nodesetval->nodeNr <= 0) ? Qtrue
: Qfalse;
}
Returns the first node in this node set, or nil if none exist.
static VALUE rxml_xpath_object_first(VALUE self)
{
rxml_xpath_object *rxpop;
if (rxml_xpath_object_empty_q(self) == Qtrue)
return Qnil;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
return rxml_xpath_object_tabref(rxpop->xpop, 0);
}
Returns the last node in this node set, or nil if none exist.
static VALUE rxml_xpath_object_last(VALUE self)
{
rxml_xpath_object *rxpop;
if (rxml_xpath_object_empty_q(self) == Qtrue)
return Qnil;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
return rxml_xpath_object_tabref(rxpop->xpop, -1);
}
Obtain the length of the nodesetval node list.
static VALUE rxml_xpath_object_length(VALUE self)
{
rxml_xpath_object *rxpop;
if (rxml_xpath_object_empty_q(self) == Qtrue)
return INT2FIX(0);
Data_Get_Struct(self, rxml_xpath_object, rxpop);
return INT2NUM(rxpop->xpop->nodesetval->nodeNr);
}
Returns the original XPath expression as a string.
static VALUE rxml_xpath_object_string(VALUE self)
{
rxml_xpath_object *rxpop;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
if (rxpop->xpop->stringval == NULL)
return Qnil;
return rxml_new_cstr( rxpop->xpop->stringval, rxpop->xdoc->encoding);
}
Obtain an array of the nodes in this set.
static VALUE rxml_xpath_object_to_a(VALUE self)
{
VALUE set_ary, nodeobj;
rxml_xpath_object *rxpop;
xmlXPathObjectPtr xpop;
int i;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
xpop = rxpop->xpop;
set_ary = rb_ary_new();
if (!((xpop->nodesetval == NULL) || (xpop->nodesetval->nodeNr == 0)))
{
for (i = 0; i < xpop->nodesetval->nodeNr; i++)
{
nodeobj = rxml_xpath_object_tabref(xpop, i);
rb_ary_push(set_ary, nodeobj);
}
}
return (set_ary);
}
Returns the XPath type of the result object. Possible values are defined as constants on the XML::XPath class and include:
-
XML::XPath::UNDEFINED
-
XML::XPath::NODESET
-
XML::XPath::BOOLEAN
-
XML::XPath::NUMBER
-
XML::XPath::STRING
-
XML::XPath::POINT
-
XML::XPath::RANGE
-
XML::XPath::LOCATIONSET
-
XML::XPath::USERS
-
XML::XPath::XSLT_TREE
static VALUE rxml_xpath_object_get_type(VALUE self)
{
rxml_xpath_object *rxpop;
Data_Get_Struct(self, rxml_xpath_object, rxpop);
return INT2FIX(rxpop->xpop->type);
}