Spec-Zone.ru › Nokogiri

class Nokogiri::XML::DocumentFragment

Родитель:
Nokogiri::XML::Node

DocumentFragment представляет фрагмент XML-документа. Он предоставляет ту же функциональность, что и XML::Node, и может содержать одно или несколько поддеревьев XML.

Атрибуты

parse_options [R]

Параметры, использованные для разбора фрагмента документа. Возвращает значение параметров, переданных конструктору или заданных в блоке конфигурации, либо параметры по умолчанию для конкретного подкласса.

Общедоступные методы класса

new(document, input=nil) { |options| ... } → DocumentFragment Показать исходный код
new(document, input=nil, context:, options:) → DocumentFragment
# File lib/nokogiri/xml/document_fragment.rb, line 85
def initialize(
  document, tags = nil,
  context_ = nil, options_ = ParseOptions::DEFAULT_XML,
  context: context_, options: options_
) # rubocop:disable Lint/MissingSuper
  return self unless tags

  options = Nokogiri::XML::ParseOptions.new(options) if Integer === options
  @parse_options = options
  yield options if block_given?

  children = if context
    # Fix for issue#490
    if Nokogiri.jruby?
      # fix for issue #770
      context.parse("<root #{namespace_declarations(context)}>#{tags}</root>", options).children
    else
      context.parse(tags, options)
    end
  else
    wrapper_doc = XML::Document.parse("<root>#{tags}</root>", nil, nil, options)
    self.errors = wrapper_doc.errors
    wrapper_doc.xpath("/root/node()")
  end
  children.each { |child| child.parent = self }
end

Разбирает входную строку с фрагментом XML и возвращает новый DocumentFragment, связанный с указанным document.

💡 Рекомендуется использовать XML::DocumentFragment.parse или Node#parse, а не вызывать этот метод напрямую.

Обязательные параметры
  • document (XML::Document) Родительский документ, с которым будет связан возвращаемый фрагмент.

Необязательные параметры
  • input (String) Содержимое для разбора.

Необязательные именованные аргументы
  • context: (Nokogiri::XML::Node) Контекстный узел создаваемого поддерева. Дополнительные сведения см. ниже.

  • options: (Nokogiri::XML::ParseOptions) Объект конфигурации, определяющий некоторые параметры поведения при разборе. Дополнительные сведения см. в ParseOptions. Значение по умолчанию — ParseOptions::DEFAULT_XML.

Передаёт блоку

Если указан блок, ему передаётся объект Nokogiri::XML::ParseOptions, который можно настроить до разбора. Дополнительные сведения см. в ParseOptions.

Возвращает

XML::DocumentFragment

Контекстный узел

Если контекстный узел указан с помощью context:, фрагмент будет создан вызовом Node#parse для этого узла, поэтому парсер будет работать так, как если бы этот Node был родителем поддерева фрагмента, и будет разрешать пространства имён относительно этого узла.

parse(input) { |options| ... } → XML::DocumentFragment Показать исходный код
parse(input, options:) → XML::DocumentFragment
# File lib/nokogiri/xml/document_fragment.rb, line 35
def parse(tags, options_ = ParseOptions::DEFAULT_XML, options: options_, &block)
  new(XML::Document.new, tags, options: options, &block)
end

Разбирает входную строку с фрагментом XML и возвращает новый XML::DocumentFragment. Этот метод создаёт новый пустой XML::Document для размещения фрагмента.

Обязательные параметры
  • input (String) Содержимое для разбора.

Необязательные именованные аргументы
  • options (Nokogiri::XML::ParseOptions) Объект конфигурации, определяющий некоторые параметры поведения при разборе. Дополнительные сведения см. в ParseOptions. Значение по умолчанию — ParseOptions::DEFAULT_XML.

Передаёт блоку

Если указан блок, ему передаётся объект Nokogiri::XML::ParseOptions, который можно настроить до разбора. Дополнительные сведения см. в Nokogiri::XML::ParseOptions.

Возвращает

Nokogiri::XML::DocumentFragment

Общедоступные методы экземпляра

css *rules, [namespace-bindings, custom-pseudo-class] Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 173
def css(*args)
  if children.any?
    children.css(*args) # 'children' is a smell here
  else
    NodeSet.new(document)
  end
end

Выполняет поиск по этому фрагменту с помощью CSS rules. rules должен содержать один или несколько селекторов CSS. Например:

Дополнительные сведения см. в Nokogiri::XML::Searchable#css

deconstruct() → Array Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 261
def deconstruct
  children.to_a
end

Возвращает корневые узлы этого фрагмента документа в виде массива для использования при сопоставлении с образцом.

💡 Обратите внимание, что возвращаются как текстовые узлы, так и элементы. Если нужно работать только с корневыми элементами, следует выполнить деструктуризацию массива, возвращённого методом DocumentFragment#elements.

Пример

frag = Nokogiri::HTML5.fragment(<<~HTML)
  <div>Start</div>
  This is a <a href="#jump">shortcut</a> for you.
  <div>End</div>
HTML

frag.deconstruct
# => [#(Element:0x35c { name = "div", children = [ #(Text "Start")] }),
#     #(Text "\n" + "This is a "),
#     #(Element:0x370 {
#       name = "a",
#       attributes = [ #(Attr:0x384 { name = "href", value = "#jump" })],
#       children = [ #(Text "shortcut")]
#       }),
#     #(Text " for you.\n"),
#     #(Element:0x398 { name = "div", children = [ #(Text "End")] }),
#     #(Text "\n")]

Пример только с элементами, без текстовых узлов.

frag.elements.deconstruct
# => [#(Element:0x35c { name = "div", children = [ #(Text "Start")] }),
#     #(Element:0x370 {
#       name = "a",
#       attributes = [ #(Attr:0x384 { name = "href", value = "#jump" })],
#       children = [ #(Text "shortcut")]
#       }),
#     #(Element:0x398 { name = "div", children = [ #(Text "End")] })]

Начиная с версии v1.14.0

dup () Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 113
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 () Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 207
def errors
  document.errors
end

Список ошибок Nokogiri::XML::SyntaxError, обнаруженных при разборе документа

fragment (data) Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 215
def fragment(data)
  document.fragment(data)
end
name () Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 125
def name
  "#document-fragment"
end

возвращает имя для DocumentFragment

search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class] Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 192
def search(*rules)
  rules, handler, ns, binds = extract_params(rules)

  rules.inject(NodeSet.new(document)) do |set, rule|
    set + if Searchable::LOOKS_LIKE_XPATH.match?(rule)
      xpath(*[rule, ns, handler, binds].compact)
    else
      children.css(*[rule, ns, handler].compact) # 'children' is a smell here
    end
  end
end

Выполняет поиск по этому фрагменту с помощью paths. paths должен содержать один или несколько запросов XPath или CSS.

Дополнительные сведения см. в Nokogiri::XML::Searchable#search

serialize ()
Псевдоним для: to_s
to_html (*args) Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 138
def to_html(*args)
  if Nokogiri.jruby?
    options = args.first.is_a?(Hash) ? args.shift : {}
    options[:save_with] ||= Node::SaveOptions::DEFAULT_HTML
    args.insert(0, options)
  end
  children.to_html(*args)
end

Преобразует этот DocumentFragment в HTML. См. Nokogiri::XML::NodeSet#to_html

to_s () Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 131
def to_s
  children.to_s
end

Преобразует этот DocumentFragment в строку

Также имеет псевдоним: serialize
to_xhtml (*args) Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 150
def to_xhtml(*args)
  if Nokogiri.jruby?
    options = args.first.is_a?(Hash) ? args.shift : {}
    options[:save_with] ||= Node::SaveOptions::DEFAULT_XHTML
    args.insert(0, options)
  end
  children.to_xhtml(*args)
end

Преобразует этот DocumentFragment в XHTML. См. Nokogiri::XML::NodeSet#to_xhtml

to_xml (*args) Показать исходный код
# File lib/nokogiri/xml/document_fragment.rb, line 162
def to_xml(*args)
  children.to_xml(*args)
end

Преобразует этот DocumentFragment в XML. См. Nokogiri::XML::NodeSet#to_xml

© 2008–2026 by Mike Dalessio, Aaron Patterson, Yoko Harada, Akinori MUSHA, John Shahid,
Karol Bucek, Sam Ruby, Craig Barnes, Stephen Checkoway, Lars Kanis, Sergio Arbeo,
Timothy Elliott, Nobuyoshi Nakada, Charles Nutter, Patrick MahoneyLicensed under the MIT License.
https://nokogiri.org/rdoc/Nokogiri/XML/DocumentFragment.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API