Class: Nokogiri::XML::DocumentFragment
- Defined in:
- lib/nokogiri/xml/document_fragment.rb,
ext/nokogiri/xml_document_fragment.c
Direct Known Subclasses
Constant Summary
Constants inherited from Node
Node::ATTRIBUTE_DECL, Node::ATTRIBUTE_NODE, Node::CDATA_SECTION_NODE, Node::COMMENT_NODE, Node::DOCB_DOCUMENT_NODE, Node::DOCUMENT_FRAG_NODE, Node::DOCUMENT_NODE, Node::DOCUMENT_TYPE_NODE, Node::DTD_NODE, Node::ELEMENT_DECL, Node::ELEMENT_NODE, Node::ENTITY_DECL, Node::ENTITY_NODE, Node::ENTITY_REF_NODE, Node::HTML_DOCUMENT_NODE, Node::NAMESPACE_DECL, Node::NOTATION_NODE, Node::PI_NODE, Node::TEXT_NODE, Node::XINCLUDE_END, Node::XINCLUDE_START
Constants included from Searchable
Class Method Summary collapse
-
.new(document) ⇒ Object
Create a new DocumentFragment element on the
document. -
.parse(tags) ⇒ Object
Create a Nokogiri::XML::DocumentFragment from
tags.
Instance Method Summary collapse
-
#css(*args) ⇒ Object
call-seq: css *rules, [namespace-bindings, custom-pseudo-class].
- #dup ⇒ Object
-
#errors ⇒ Object
A list of Nokogiri::XML::SyntaxError found when parsing a document.
-
#errors=(things) ⇒ Object
:nodoc:.
- #fragment(data) ⇒ Object
-
#initialize(document, tags = nil, ctx = nil) ⇒ DocumentFragment
constructor
Create a new DocumentFragment from
tags. -
#name ⇒ Object
return the name for DocumentFragment.
-
#search(*rules) ⇒ Object
call-seq: search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class].
-
#to_html(*args) ⇒ Object
Convert this DocumentFragment to html See Nokogiri::XML::NodeSet#to_html.
-
#to_s ⇒ Object
(also: #serialize)
Convert this DocumentFragment to a string.
-
#to_xhtml(*args) ⇒ Object
Convert this DocumentFragment to xhtml See Nokogiri::XML::NodeSet#to_xhtml.
-
#to_xml(*args) ⇒ Object
Convert this DocumentFragment to xml See Nokogiri::XML::NodeSet#to_xml.
Methods inherited from Node
#<<, #<=>, #==, #>, #[], #[]=, #accept, #add_child, #add_class, #add_namespace_definition, #add_next_sibling, #add_previous_sibling, #after, #ancestors, #append_class, #attribute, #attribute_nodes, #attribute_with_ns, #attributes, #before, #blank?, #canonicalize, #cdata?, #child, #children, #children=, #classes, #comment?, #content, #content=, #create_external_subset, #create_internal_subset, #css_path, #decorate!, #default_namespace=, #description, #do_xinclude, #document, #document?, #each, #element?, #element_children, #encode_special_chars, #external_subset, #first_element_child, #fragment?, #html?, #inner_html, #inner_html=, #internal_subset, #key?, #keys, #kwattr_add, #kwattr_append, #kwattr_remove, #kwattr_values, #lang, #lang=, #last_element_child, #line, #line=, #matches?, #namespace, #namespace=, #namespace_definitions, #namespace_scopes, #namespaced_key?, #namespaces, #native_content=, #next_element, #next_sibling, #node_name, #node_name=, #node_type, #parent, #parent=, #parse, #path, #pointer_id, #prepend_child, #previous_element, #previous_sibling, #processing_instruction?, #read_only?, #remove_attribute, #remove_class, #replace, #swap, #text?, #traverse, #unlink, #value?, #values, #wrap, #write_html_to, #write_to, #write_xhtml_to, #write_xml_to, #xml?
Methods included from Searchable
#at, #at_css, #at_xpath, #xpath
Methods included from PP::Node
Constructor Details
#initialize(document, tags = nil, ctx = nil) ⇒ DocumentFragment
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.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 11 def initialize document, = nil, ctx = nil return self unless children = if ctx # Fix for issue#490 if Nokogiri.jruby? # fix for issue #770 ctx.parse("<root #{namespace_declarations(ctx)}>#{}</root>").children else ctx.parse() end else XML::Document.parse("<root>#{}</root>") \ .xpath("/root/node()") end children.each { |child| child.parent = self } end |
Class Method Details
.new(document) ⇒ Object
Create a new DocumentFragment element on the document
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'ext/nokogiri/xml_document_fragment.c', line 9
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;
}
|
Instance Method Details
#css(*args) ⇒ Object
call-seq: css *rules, [namespace-bindings, custom-pseudo-class]
Search this fragment for CSS rules. rules must be one or more CSS
selectors. For example:
For more information see Nokogiri::XML::Searchable#css
94 95 96 97 98 99 100 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 94 def css *args if children.any? children.css(*args) # 'children' is a smell here else NodeSet.new(document) end end |
#dup ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 30 def dup new_document = document.dup new_fragment = self.class.new(new_document) children.each do |child| child.dup(1, new_document).parent = new_fragment end new_fragment end |
#errors ⇒ Object
A list of Nokogiri::XML::SyntaxError found when parsing a document
136 137 138 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 136 def errors document.errors end |
#errors=(things) ⇒ Object
:nodoc:
140 141 142 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 140 def errors= things # :nodoc: document.errors = things end |
#fragment(data) ⇒ Object
144 145 146 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 144 def fragment(data) document.fragment(data) end |
#name ⇒ Object
return the name for DocumentFragment
42 43 44 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 42 def name '#document-fragment' end |
#search(*rules) ⇒ Object
call-seq: search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class]
Search this fragment for paths. paths must be one or more XPath or CSS queries.
For more information see Nokogiri::XML::Searchable#search
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 113 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 |
#to_html(*args) ⇒ Object
Convert this DocumentFragment to html See Nokogiri::XML::NodeSet#to_html
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 55 def to_html *args if Nokogiri.jruby? = args.first.is_a?(Hash) ? args.shift : {} if ![:save_with] [:save_with] = Node::SaveOptions::NO_DECLARATION | Node::SaveOptions::NO_EMPTY_TAGS | Node::SaveOptions::AS_HTML end args.insert(0, ) end children.to_html(*args) end |
#to_s ⇒ Object Also known as: serialize
Convert this DocumentFragment to a string
48 49 50 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 48 def to_s children.to_s end |
#to_xhtml(*args) ⇒ Object
Convert this DocumentFragment to xhtml See Nokogiri::XML::NodeSet#to_xhtml
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 69 def to_xhtml *args if Nokogiri.jruby? = args.first.is_a?(Hash) ? args.shift : {} if ![:save_with] [:save_with] = Node::SaveOptions::NO_DECLARATION | Node::SaveOptions::NO_EMPTY_TAGS | Node::SaveOptions::AS_XHTML end args.insert(0, ) end children.to_xhtml(*args) end |
#to_xml(*args) ⇒ Object
Convert this DocumentFragment to xml See Nokogiri::XML::NodeSet#to_xml
83 84 85 |
# File 'lib/nokogiri/xml/document_fragment.rb', line 83 def to_xml *args children.to_xml(*args) end |