Nokogiri::XML::DocumentFragment

class Nokogiri::XML::DocumentFragment

Parent:
Nokogiri::XML::Node

DocumentFragment represents a DocumentFragment node in an xml document.

Public Class Methods

new(document, tags = nil, ctx = nil) Show source

Create a new DocumentFragment from tags.

If ctx is present, it is used as a context node for the subtree created, e.g., namespaces will be resolved relative to ctx.

# File lib/nokogiri/xml/document_fragment.rb, line 10
def initialize document, tags = nil, ctx = nil
  return self unless tags

  children = if ctx
               # Fix for issue#490
               if Nokogiri.jruby?
                 # fix for issue #770
                 ctx.parse("<root #{namespace_declarations(ctx)}>#{tags}</root>").children
               else
                 ctx.parse(tags)
               end
             else
               XML::Document.parse("<root>#{tags}</root>")                         .xpath("/root/node()")
             end
  children.each { |child| child.parent = self }
end
new(document) Show source

Create a new DocumentFragment element on the document

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

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

  Data_Get_Struct(document, xmlDoc, xml_doc);

  node = xmlNewDocFragment(xml_doc->doc);

  nokogiri_root_node(node);

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

  if(rb_block_given_p()) rb_yield(rb_node);

  return rb_node;
}
parse(tags) Show source

Create a Nokogiri::XML::DocumentFragment from tags

# File lib/nokogiri/xml/document_fragment.rb, line 118
def parse tags
  self.new(XML::Document.new, tags)
end

Public Instance Methods

css *rules, [namespace-bindings, custom-pseudo-class] Show source

Search this fragment for CSS rules. rules must be one or more CSS selectors. For example:

For more information see Nokogiri::XML::Searchable#css

# File lib/nokogiri/xml/document_fragment.rb, line 82
def css *args
  if children.any?
    children.css(*args) # 'children' is a smell here
  else
    NodeSet.new(document)
  end
end
errors() Show source

A list of Nokogiri::XML::SyntaxError found when parsing a document

# File lib/nokogiri/xml/document_fragment.rb, line 124
def errors
  document.errors
end
name() Show source

return the name for DocumentFragment

# File lib/nokogiri/xml/document_fragment.rb, line 30
def name
  '#document-fragment'
end

Search this fragment for paths. paths must be one or more XPath or CSS queries.

For more information see Nokogiri::XML::Searchable#search

# File lib/nokogiri/xml/document_fragment.rb, line 101
def search *rules
  rules, handler, ns, binds = extract_params(rules)

  rules.inject(NodeSet.new(document)) do |set, rule|
    set += if rule =~ Searchable::LOOKS_LIKE_XPATH
             xpath(*([rule, ns, handler, binds].compact))
           else
             children.css(*([rule, ns, handler].compact)) # 'children' is a smell here
           end
  end
end
serialize()
Alias for: to_s
to_html(*args) Show source

Convert this DocumentFragment to html See Nokogiri::XML::NodeSet#to_html

# File lib/nokogiri/xml/document_fragment.rb, line 43
def to_html *args
  if Nokogiri.jruby?
    options = args.first.is_a?(Hash) ? args.shift : {}
    if !options[:save_with]
      options[:save_with] = Node::SaveOptions::NO_DECLARATION | Node::SaveOptions::NO_EMPTY_TAGS | Node::SaveOptions::AS_HTML
    end
    args.insert(0, options)
  end
  children.to_html(*args)
end
to_s() Show source

Convert this DocumentFragment to a string

# File lib/nokogiri/xml/document_fragment.rb, line 36
def to_s
  children.to_s
end
Also aliased as: serialize
to_xhtml(*args) Show source

Convert this DocumentFragment to xhtml See Nokogiri::XML::NodeSet#to_xhtml

# File lib/nokogiri/xml/document_fragment.rb, line 57
def to_xhtml *args
  if Nokogiri.jruby?
    options = args.first.is_a?(Hash) ? args.shift : {}
    if !options[:save_with]
      options[:save_with] = Node::SaveOptions::NO_DECLARATION | Node::SaveOptions::NO_EMPTY_TAGS | Node::SaveOptions::AS_XHTML
    end
    args.insert(0, options)
  end
  children.to_xhtml(*args)
end
to_xml(*args) Show source

Convert this DocumentFragment to xml See Nokogiri::XML::NodeSet#to_xml

# File lib/nokogiri/xml/document_fragment.rb, line 71
def to_xml *args
  children.to_xml(*args)
end

© 2008–2016 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo
Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid
Licensed under the MIT License.

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部