Class: Nokogiri::HTML4::DocumentFragment
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
Nokogiri::XML::DocumentFragment
|
Defined in: | lib/nokogiri/html4/document_fragment.rb |
Constant Summary
::Nokogiri::XML::PP::Node
- Included
::Nokogiri::XML::Searchable
- Included
::Nokogiri::ClassResolver
- Included
::Nokogiri::XML::Node
- Inherited
ATTRIBUTE_DECL, ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DECONSTRUCT_KEYS, DECONSTRUCT_METHODS, DOCB_DOCUMENT_NODE, DOCUMENT_FRAG_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, DTD_NODE, ELEMENT_DECL, ELEMENT_NODE, ENTITY_DECL, ENTITY_NODE, ENTITY_REF_NODE, HTML_DOCUMENT_NODE, IMPLIED_XPATH_CONTEXTS, NAMESPACE_DECL, NOTATION_NODE, PI_NODE, TEXT_NODE, XINCLUDE_END, XINCLUDE_START
Class Method Summary
-
.new(document, tags = nil, ctx = nil, options = XML::ParseOptions::DEFAULT_HTML) {|options| ... } ⇒ DocumentFragment
constructor
It’s recommended to use either .parse or XML::Node#parse rather than call this method directly.
-
.parse(tags) ⇒ DocumentFragment
Parse an
::Nokogiri::HTML4
fragment.
::Nokogiri::XML::DocumentFragment
- Inherited
.new | Alias for XML::EntityReference.new. |
.parse | Create a |
::Nokogiri::XML::Node
- Inherited
.new | documented in lib/nokogiri/xml/node.rb. |
Instance Attribute Summary
::Nokogiri::XML::DocumentFragment
- Inherited
#errors | A list of |
#parse_options | The options used to parse the document fragment. |
#errors= |
::Nokogiri::XML::Node
- Inherited
#blank? |
|
#cdata? | Returns true if this is a CDATA. |
#children | :category: Traversing Document Structure. |
#children= | Set the content for this Node |
#comment? | Returns true if this is a Comment. |
#content | [Returns]. |
#content= | Set the content of this node to |
#default_namespace= | Adds a default namespace supplied as a string |
#document | :category: Traversing Document Structure. |
#document? | Returns true if this is a |
#elem? | Alias for XML::Node#element?. |
#element? | Returns true if this is an Element node. |
#fragment? | Returns true if this is a |
#html? | Returns true if this is an |
#inner_html | Get the inner_html for this node’s |
#inner_html= | Set the content for this Node to |
#inner_text | Alias for XML::Node#content. |
#lang | Searches the language of a node, i.e. |
#lang= | Set the language of a node, i.e. |
#line |
|
#line= | Sets the line for this Node. |
#name | Alias for XML::Node#node_name. |
#namespace |
|
#namespace= | Set the default namespace on this node (as would be defined with an “xmlns=” attribute in |
#native_content= | Set the content of this node to |
#next | Alias for XML::Node#next_sibling. |
#next= | Alias for XML::Node#add_next_sibling. |
#node_name | Returns the name for this Node. |
#node_name= | Set the name for this Node. |
#parent | Get the parent Node for this Node. |
#parent= | Set the parent Node for this Node. |
#previous | Alias for XML::Node#previous_sibling. |
#previous= | Alias for XML::Node#add_previous_sibling. |
#processing_instruction? | Returns true if this is a ProcessingInstruction node. |
#read_only? | Is this a read only node? |
#text | Alias for XML::Node#content. |
#text? | Returns true if this is a Text node. |
#to_str | Alias for XML::Node#content. |
#xml? | Returns true if this is an |
#prepend_newline?, #data_ptr? |
Instance Method Summary
::Nokogiri::XML::DocumentFragment
- Inherited
#css | Search this fragment for |
#deconstruct | Returns the root nodes of this document fragment as an array, to use in pattern matching. |
#dup, #fragment, | |
#initialize | Create a new |
#name | return the name for |
#search | Search this fragment for |
#serialize | Alias for XML::DocumentFragment#to_s. |
#to_html | Convert this |
#to_s | Convert this |
#to_xhtml | Convert this |
#to_xml | Convert this |
#namespace_declarations | fix for issue 770. |
::Nokogiri::XML::Node
- Inherited
#<< | Add |
#<=> | Compare two Node objects with respect to their |
#== |
|
#[] | Fetch an attribute from this node. |
#[]= | Update the attribute |
#accept | Accept a visitor. |
#add_child | Add |
#add_class | Ensure HTML |
#add_namespace | Alias for XML::Node#add_namespace_definition. |
#add_namespace_definition | :category: Manipulating Document Structure. |
#add_next_sibling | Insert |
#add_previous_sibling | Insert |
#after | Insert |
#ancestors | Get a list of ancestor Node for this Node. |
#append_class | Add HTML |
#attr | Alias for XML::Node#[]. |
#attribute | :category: Working With Node Attributes. |
#attribute_nodes | :category: Working With Node Attributes. |
#attribute_with_ns | :category: Working With Node Attributes. |
#attributes | Fetch this node’s attributes. |
#before | Insert |
#canonicalize, | |
#child | :category: Traversing Document Structure. |
#classes | Fetch CSS class names of a Node. |
#clone | Clone this node. |
#create_external_subset | Create an external subset. |
#create_internal_subset | Create the internal subset of a document. |
#css_path | Get the path to this node as a |
#deconstruct_keys | Returns a hash describing the Node, to use in pattern matching. |
#decorate! | Decorate this node with the decorators set up in this node’s |
#delete | Alias for XML::Node#remove_attribute. |
#description | Fetch the |
#do_xinclude | Do xinclude substitution on the subtree below node. |
#dup | Duplicate this node. |
#each | Iterate over each attribute name and value pair for this Node. |
#element_children | [Returns]. |
#elements | Alias for XML::Node#element_children. |
#encode_special_chars | Encode any special characters in |
#external_subset | Get the external subset. |
#first_element_child |
|
#fragment | Create a |
#get_attribute | Alias for XML::Node#[]. |
#has_attribute? | Alias for XML::Node#key?. |
#initialize | Create a new node with |
#internal_subset | Get the internal subset. |
#key? | Returns true if |
#keys | Get the attribute names for this Node. |
#kwattr_add | Ensure that values are present in a keyword attribute. |
#kwattr_append | Add keywords to a Node’s keyword attribute, regardless of duplication. |
#kwattr_remove | Remove keywords from a keyword attribute. |
#kwattr_values | Fetch values from a keyword attribute of a Node. |
#last_element_child |
|
#matches? | Returns true if this Node matches |
#namespace_definitions | [Returns]. |
#namespace_scopes |
|
#namespaced_key? | Returns true if |
#namespaces | Fetch all the namespaces on this node and its ancestors. |
#next_element | Returns the next |
#next_sibling | Returns the next sibling node. |
#node_type | Get the type for this Node. |
#parse | Parse |
#path | Returns the path associated with this Node. |
#pointer_id | [Returns]. |
#prepend_child | Add |
#previous_element | Returns the previous |
#previous_sibling | Returns the previous sibling node. |
#remove | Alias for XML::Node#unlink. |
#remove_attribute | Remove the attribute named |
#remove_class | Remove HTML |
#replace | Replace this Node with |
#serialize | Serialize Node using |
#set_attribute | Alias for XML::Node#[]=. |
#swap | Swap this Node for |
#to_html | Serialize this Node to |
#to_s | Turn this node in to a string. |
#to_xhtml | Serialize this Node to XHTML using |
#to_xml | Serialize this Node to |
#traverse | Yields self and all children to |
#type | Alias for XML::Node#node_type. |
#unlink | Unlink this node from its current context. |
#value? | Does this Node’s attributes include <value>. |
#values | Get the attribute values for this Node. |
#wrap | Wrap this Node with the node parsed from |
#write_html_to | Write Node as |
#write_to | Serialize this node or document to |
#write_xhtml_to | Write Node as XHTML to |
#write_xml_to | Write Node as |
#add_child_node_and_reparent_attrs, #add_sibling, | |
#compare | Compare this Node to |
#dump_html | Returns the Node as html. |
#get | Get the value for |
#html_standard_serialize, | |
#in_context | TODO: DOCUMENT ME. |
#inspect_attributes, #keywordify, | |
#native_write_to | Write this Node to |
#process_xincludes | Loads and substitutes all xinclude elements below the node. |
#set | Set the |
#set_namespace | Set the namespace to |
#to_format, #write_format_to, #add_child_node, #add_next_sibling_node, #add_previous_sibling_node, #replace_node |
::Nokogiri::ClassResolver
- Included
#related_class | Find a class constant within the. |
::Nokogiri::XML::Searchable
- Included
#% | Alias for XML::Searchable#at. |
#/ | Alias for XML::Searchable#search. |
#> | Search this node’s immediate children using |
#at | Search this object for |
#at_css | Search this object for |
#at_xpath | Search this node for XPath |
#css | Search this object for |
#search | Search this object for |
#xpath | Search this node for XPath |
#css_internal, #css_rules_to_xpath, #xpath_impl, #xpath_internal, #xpath_query_from_css_rule, #extract_params |
::Nokogiri::XML::PP::Node
- Included
Constructor Details
.new(document, tags = nil, ctx = nil, options = XML::ParseOptions::DEFAULT_HTML) {|options| ... } ⇒ DocumentFragment
It’s recommended to use either .parse or XML::Node#parse rather than call this method directly.
# File 'lib/nokogiri/html4/document_fragment.rb', line 90
def initialize(document, = nil, ctx = nil, = XML::ParseOptions::DEFAULT_HTML) # rubocop:disable Lint/MissingSuper return self unless = Nokogiri::XML::ParseOptions.new( ) if Integer === @parse_options = yield if block_given? if ctx preexisting_errors = document.errors.dup node_set = ctx.parse("<div>#{}</div>", ) node_set.first.children.each { |child| child.parent = self } unless node_set.empty? self.errors = document.errors - preexisting_errors else # This is a horrible hack, but I don't care path = if /^\s*?<body/i.match?( ) "/html/body" else "/html/body/node()" end temp_doc = HTML4::Document.parse("<html><body>#{}", nil, document.encoding, ) temp_doc.xpath(path).each { |child| child.parent = self } self.errors = temp_doc.errors end children end
Class Method Details
.parse(tags) ⇒ DocumentFragment
.parse(tags, encoding) ⇒ DocumentFragment
.parse(tags, encoding, options) ⇒ DocumentFragment
.parse(tags, encoding) {|options| ... } ⇒ DocumentFragment
DocumentFragment
.parse(tags, encoding) ⇒ DocumentFragment
.parse(tags, encoding, options) ⇒ DocumentFragment
.parse(tags, encoding) {|options| ... } ⇒ DocumentFragment
Parse an ::Nokogiri::HTML4
fragment.
- Parameters
-
tags
(optional String, or any object that responds to#read
such as an IO, or StringIO) -
encoding
(optional String) the name of the encoding that should be used when processing the document. (defaultnil
for auto-detection) -
options
(optional) configuration object that sets options during parsing, such as Nokogiri::XML::ParseOptions::RECOVER. See Nokogiri::XML::ParseOptions for more information.
- Yields
-
If present, the block will be passed a
::Nokogiri::XML::ParseOptions
object to modify
before the fragment is parsed. See Nokogiri::XML::ParseOptions for more information.
- Returns
-
DocumentFragment
Example: Parsing a string
fragment = DocumentFragment.parse("<div>Hello World</div>")
Example: Parsing an IO
fragment = File.open("fragment.html") do |file|
DocumentFragment.parse(file)
end
Example: Specifying encoding
fragment = DocumentFragment.parse(input, "EUC-JP")
Example: Setting parse options dynamically
DocumentFragment.parse("<div>Hello World") do ||
.huge.pedantic
end
# File 'lib/nokogiri/html4/document_fragment.rb', line 49
def self.parse(, encoding = nil, = XML::ParseOptions::DEFAULT_HTML, &block) doc = HTML4::Document.new if .respond_to?(:read) # Handle IO-like objects (IO, File, StringIO, etc.) # The _read_ method of these objects doesn't accept an encoding parameter. # Encoding is usually set when the IO object is created or opened, # or by using the _set_encoding_ method. # # 1. If encoding is provided and the object supports _set_encoding_, # set the encoding before reading. # 2. Read the content from the IO-like object. # # Note: After reading, the content's encoding will be: # - The encoding set by _set_encoding_ if it was called # - The default encoding of the IO object otherwise # # For StringIO specifically, _set_encoding_ affects only the internal string, # not how the data is read out. .set_encoding(encoding) if encoding && .respond_to?(:set_encoding) = .read end encoding ||= if .respond_to?(:encoding) encoding = .encoding if encoding == ::Encoding::ASCII_8BIT "UTF-8" else encoding.name end else "UTF-8" end doc.encoding = encoding new(doc, , nil, , &block) end