class Nokogiri::XML::Namespace - nokogiri-1.18.10 Documentation

# class Nokogiri::XML::Namespace

### Attributes

document[R]

### Public Instance Methods

deconstruct_keys(array_of_names) → Hash click to toggle source

Returns a hash describing the `Namespace`, to use in pattern matching.

Valid keys and their values:

- `prefix` → (String, nil) The namespace’s prefix, or `nil` if there is no prefix (e.g., default namespace).

- `href` → (String) The namespace’s URI

Example

    doc = Nokogiri::XML.parse(<<~XML)
      <?xml version="1.0"?>
      <root xmlns="http://nokogiri.org/ns/default" xmlns:noko="http://nokogiri.org/ns/noko">
        <child1 foo="abc" noko:bar="def"/>
        <noko:child2 foo="qwe" noko:bar="rty"/>
      </root>
    XML

    doc.root.elements.first.namespace
    # => #(Namespace:0x35c { href = "http://nokogiri.org/ns/default" })

    doc.root.elements.first.namespace.deconstruct_keys([:prefix, :href])
    # => {:prefix=>nil, :href=>"http://nokogiri.org/ns/default"}

    doc.root.elements.last.namespace
    # => #(Namespace:0x370 {
    #      prefix = "noko",
    #      href = "http://nokogiri.org/ns/noko"
    #      })

    doc.root.elements.last.namespace.deconstruct_keys([:prefix, :href])
    # => {:prefix=>"noko", :href=>"http://nokogiri.org/ns/noko"}

Since v1.14.0

    # File lib/nokogiri/xml/namespace.rb, line 46
    def deconstruct_keys(keys)
      { prefix: prefix, href: href }
    end

href() → String click to toggle source

Returns the URI reference for this `Namespace`.

Example

    doc = Nokogiri::XML.parse(<<~XML)
      <?xml version="1.0"?>
      <root xmlns="http://nokogiri.org/ns/default" xmlns:noko="http://nokogiri.org/ns/noko">
        <child1 foo="abc" noko:bar="def"/>
        <noko:child2 foo="qwe" noko:bar="rty"/>
      </root>
    XML

    doc.root.elements.first.namespace.href
    # => "http://nokogiri.org/ns/default"

    doc.root.elements.last.namespace.href
    # => "http://nokogiri.org/ns/noko"

    static VALUE
    href(VALUE self)
    {
      xmlNsPtr ns;

      Noko_Namespace_Get_Struct(self, xmlNs, ns);
      if (!ns->href) { return Qnil; }

      return NOKOGIRI_STR_NEW2(ns->href);
    }

prefix() → String or nil click to toggle source

Return the prefix for this `Namespace`, or `nil` if there is no prefix (e.g., default namespace).

Example

    doc = Nokogiri::XML.parse(<<~XML)
      <?xml version="1.0"?>
      <root xmlns="http://nokogiri.org/ns/default" xmlns:noko="http://nokogiri.org/ns/noko">
        <child1 foo="abc" noko:bar="def"/>
        <noko:child2 foo="qwe" noko:bar="rty"/>
      </root>
    XML

    doc.root.elements.first.namespace.prefix
    # => nil

    doc.root.elements.last.namespace.prefix
    # => "noko"

    static VALUE
    prefix(VALUE self)
    {
      xmlNsPtr ns;

      Noko_Namespace_Get_Struct(self, xmlNs, ns);
      if (!ns->prefix) { return Qnil; }

      return NOKOGIRI_STR_NEW2(ns->prefix);
    }

### Private Instance Methods

inspect_attributes() click to toggle source

    # File lib/nokogiri/xml/namespace.rb, line 52
    def inspect_attributes
      [:prefix, :href]
    end