class Nokogiri::XML::Attr - nokogiri-1.10.3 Documentation

# class Nokogiri::XML::Attr

Attr represents a Attr node in an xml document.

### Public Class Methods

new(document, name) click to toggle source

Create a new Attr element on the `document` with `name`

    static VALUE new(int argc, VALUE *argv, VALUE klass)
    {
      xmlDocPtr xml_doc;
      VALUE document;
      VALUE name;
      VALUE rest;
      xmlAttrPtr node;
      VALUE rb_node;

      rb_scan_args(argc, argv, "2*", &document, &name, &rest);

      if (! rb_obj_is_kind_of(document, cNokogiriXmlDocument)) {
        rb_raise(rb_eArgError, "parameter must be a Nokogiri::XML::Document");
      }

      Data_Get_Struct(document, xmlDoc, xml_doc);

      node = xmlNewDocProp(
               xml_doc,
               (const xmlChar *)StringValueCStr(name),
               NULL
             );

      nokogiri_root_node((xmlNodePtr)node);

      rb_node = Nokogiri_wrap_xml_node(klass, (xmlNodePtr)node);
      rb_obj_call_init(rb_node, argc, argv);

      if (rb_block_given_p()) {
        rb_yield(rb_node);
      }

      return rb_node;
    }

### Public Instance Methods

content=(p1)
Alias for: value=
value=(content) click to toggle source

Set the value for this Attr to `content`. Use `nil` to remove the value (e.g., a HTML boolean attribute).

    static VALUE set_value(VALUE self, VALUE content)
    {
      xmlAttrPtr attr;
      xmlChar *value;
      xmlNode *cur;

      Data_Get_Struct(self, xmlAttr, attr);

      if (attr->children) {
        xmlFreeNodeList(attr->children);
      }
      attr->children = attr->last = NULL;

      if (content == Qnil) {
        return content;
      }

      value = xmlEncodeEntitiesReentrant(attr->doc, (unsigned char *)StringValueCStr(content));
      if (xmlStrlen(value) == 0) {
        attr->children = xmlNewDocText(attr->doc, value);
      } else {
        attr->children = xmlStringGetNodeList(attr->doc, value);
      }
      xmlFree(value);

      for (cur = attr->children; cur; cur = cur->next) {
        cur->parent = (xmlNode *)attr;
        cur->doc = attr->doc;
        if (cur->next == NULL) {
          attr->last = cur;
        }
      }

      return content;
    }

Also aliased as: content=

### Private Instance Methods

inspect_attributes() click to toggle source

    # File lib/nokogiri/xml/attr.rb, line 9
    def inspect_attributes
      [:name, :namespace, :value]
    end