Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

postmodern/nokogiri-diff

Open more actions menu

Repository files navigation

nokogiri-diff

CI

Description

nokogiri-diff adds the ability to calculate the differences (added or removed nodes) between two XML/HTML documents.

Features

  • Performs a breadth-first comparison between children nodes.
  • Compares XML/HTML Elements, Attributes, Text nodes and DTD nodes.
  • Allows calculating differences between documents, or just enumerating the added or removed nodes.

Examples

Enumerate over the differences between two HTML documents:

require 'nokogiri/diff'

doc1 = Nokogiri::HTML('<div><p>one</p> two </div>')
doc2 = Nokogiri::HTML('<div><p id="1">one</p> <p>three</p></div>')

doc1.diff(doc2) do |change,node|
  puts "#{change} #{node.to_html}".ljust(30) + node.parent.path
end

#   <div>
# <p>one</p> two </div> /
#   <p>one</p>                  /div
# -  two                        /div
# +                             /div
# + <p>three</p>                /div
# +  id="1"                     /div/p[1]
#   one                         /div/p

Only find the added nodes:

doc1.diff(doc2, :added => true) do |change,node|
  puts node.to_html.ljust(30) + node.parent.path
end

#                               /div
# <p>three</p>                  /div
#  id="1"                       /div/p[1]

Only find the removed nodes:

doc1.diff(doc2, :removed => true) do |change,node|
  puts node.to_html.ljust(30) + node.parent.path
end

#  two                          /div

Requirements

Install

$ gem install nokogiri-diff

License

See {file:LICENSE.txt} for details.

About

Calculate the differences between two XML/HTML documents.

Topics

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.