1.5.2 / 2012-03-09
Repackaging of 1.5.1 with a gemspec that is compatible with older Rubies.
631, 632.
1.5.1 / 2012-03-09
- Features
- XML::Builder#comment allows creation of comment nodes.
- CSS searches now support namespaced attributes. 593
- Java integration feature is added. Now, XML::Document.wrap and
XML::Document#to_java methods are available.
- RelaxNG validator support in the `nokogiri` cli utility. 591 (thanks, Dan
Radez!)
- Bugfixes
- Fix many memory leaks and segfault opportunities. Thanks, Tim Elliott!
- extconf searches homebrew paths if homebrew is installed.
- Inconsistent behavior of Nokogiri
1.5.0 Java 620
- Inheriting from Nokogiri::XML::Node on JRuby
(1.6.4/5) fails 560
- XML::Attr nodes are not allowed to be added as node children, so an
exception is raised. 558
- No longer defensively "pickle" adjacent text nodes on
Node#add_next_sibling and Node#add_previous_sibling calls. 595.
- Java version inconsistency: it returns nil for empty attributes 589
- to_xhtml incorrectly generates <p /></p> when tag is empty 557
- Document#add_child now accepts a Node, NodeSet, DocumentFragment, or
String. 546.
- Document#create_element now recognizes namespaces containing non-word
characters (like "SOAP-ENV"). This is mostly relevant to users of
Builder, which calls Document#create_element for nearly everything. 531.
- File encoding broken in 1.5.0 / jruby / windows 529
- Java version does not return namespace defs as attrs for ::HTML 542
- Bad file descriptor with Nokogiri
1.5.0 495
- remove_namespace! doesn‘t work in pure java version 492
- The Nokogiri Java native build
throws a null pointer exception when ActiveSupport‘s .blank? method
is called directly on a parsed object. 489
- 1.5.0 Not using correct character encoding 488
- Raw XML string in XML Builder broken on JRuby 486
- Nokogiri 1.5.0 XML generation broken
on JRuby 484
- Do not allow multiple root nodes. 550
- Fixes for custom XPath functions. 605, 606 (thanks, Juan Wajnerman!)
- Node#to_xml does not override :save_with if it is provided. 505
- Node#set is a private method [JRuby]. 564 (thanks, Nick Sieger!)
- C14n cleanup and Node#canonicalize (thanks, Ivan Pirlik!) 563
1.5.0 / 2011-07-01
- Notes
- Features
- extracted sets of Node::SaveOptions into
Node::SaveOptions::DEFAULT_{X,H,XH}TML (refactor)
- Bugfixes
- default output of XML on JRuby is no longer formatted due to inconsistent
whitespace handling. 415
- (JRuby) making empty NodeSets with null `nodes` member safe to operate on.
443
- Fix a bug in advanced encoding detection that leads to partially duplicated
document when parsing an HTML file with unknown encoding.
- Add support for <meta charset="…">.
1.5.0 beta3 / 2010/12/02
- Notes
- JRuby performance tuning
- See changelog from 1.4.4
- Bugfixes
- Node#inner_text no longer returns nil. (JRuby) 264
1.5.0 beta2 / 2010/07/30
1.5.0 beta1 / 2010/05/22
- Notes
- JRuby support is provided by a new pure-java backend.
- Deprecations
- Ruby 1.8.6 is deprecated. Nokogiri
will install, but official support is ended.
- LibXML 2.6.16 and earlier are deprecated. Nokogiri will refuse to install.
- FFI support is removed.
1.4.7 / 2011-07-01
- Bugfixes
- Fix a bug in advanced encoding detection that leads to partially duplicated
document when parsing an HTML file with unknown encoding. Thanks, Timothy
Elliott (@ender672)! 478
1.4.6 / 2011-06-19
- Notes
- This version is functionally identical to 1.4.5.
- Ruby 1.8.6 support has been restored.
1.4.5 / 2011-05-19
- New Features
- Nokogiri::HTML::Document#title accessor gets and sets the document title.
- extracted sets of Node::SaveOptions into
Node::SaveOptions::DEFAULT_{X,H,XH}TML (refactor)
- Raise an exception if a string is passed to Nokogiri::XML::Schema#validate.
406
- Bugfixes
- Node#serialize-and-friends now accepts a SaveOption object as the, erm,
save object.
- Nokogiri::CSS::Parser
has-a Nokogiri::CSS::Tokenizer
- [JRUBY+FFI only] Weak references are now threadsafe. 355
- Make direct start_element() callback (currently used for HTML::SAX::Parser)
pass attributes in assoc array, just as emulated start_element() callback
does. rel. 356
- HTML::SAX::Parser should call back a block given to parse*() if any, just
as XML::SAX::Parser does.
- Add further encoding detection to HTML parser that libxml2 does not do.
- Document#remove_namespaces! now handles attributes with namespaces. 396
- XSLT::Stylesheet#transform no longer segfaults when handed a
non-XML::Document. 452
- XML::Reader no longer segfaults when under GC pressure. 439
1.4.4 / 2010-11-15
- New Features
- XML::Node#children= sets the node‘s inner html (much like
inner_html=), but returns the reparent node(s).
- XSLT supports function extensions. 336
- XPath bind parameter substitution. 329
- XML::Reader node type constants. 369
- SAX Parser context provides line and column information
- Bugfixes
- XML::DTD#attributes returns an empty hash instead of nil when there are no
attributes.
- XML::DTD#{keys,each} now work as expected. 324
- {XML,HTML}::DocumentFragment.{new,parse} no longer strip leading and
trailing whitespace. 319
- XML::Node#{add_child,add_previous_sibling,add_next_sibling,replace} return
a NodeSet when passed a string.
- Unclosed tags parsed more robustly in fragments. 315
- XML::Node#{replace,add_previous_sibling,add_next_sibling} edge cases fixed
related to libxml‘s text node merging. 308
- Fixed a segfault when GC occurs during xpath handler argument marshalling.
345
- Added hack to Slop decorator to work with previously defined methods. 330
- Fix a memory leak when duplicating child nodes. 353
- Fixed off-by-one bug with nth-last-{child,of-type} CSS selectors when NOT
using an+b notation. 354
- Fixed passing of non-namespace attributes to SAX::Document#start_element.
356
- Workaround for libxml2 in-context parsing bug. 362
- Fixed NodeSet#wrap on nodes within a fragment. 331
1.4.3 / 2010/07/28
- New Features
- XML::Reader#empty_element? returns true for empty elements. 262
- Node#remove_namespaces! now removes namespace declarations as well.
294
- NodeSet#at_xpath, NodeSet#at_css and NodeSet#> do what the corresponding
methods of Node do.
- Bugfixes
- XML::NodeSet#{include?,delete,push} accept an XML::Namespace
- XML::Document#parse added for parsing in the context of a document
- XML::DocumentFragment#inner_html= works with contextual parsing! 298, 281
- lib/nokogiri/css/parser.y Combined CSS functions + pseudo selectors fixed
- Reparenting text nodes is safe, even when the operation frees adjacent
merged nodes. 283
- Fixed libxml2 versionitis issue with xmlFirstElementChild et al. 303
- XML::Attr#add_namespace now works as expected. 252
- HTML::DocumentFragment uses the string‘s encoding. 305
- Fix the CSS3 selector translation rule for the general sibling combinator
(a.k.a. preceding selector) that incorrectly converted "E ~ F G"
to "//F//G[preceding-sibling::E]".
1.4.2 / 2010/05/22
- New Features
- XML::Node#parse will parse XML or HTML fragments with respect to the
context node.
- XML::Node#namespaces returns all namespaces defined in the node and all
ancestor nodes (previously did not return ancestors’ namespace
definitions).
- Added Enumerable to XML::Node
- Nokogiri::XML::Schema#validate now uses xmlSchemaValidateFile if a filename
is passed, which is faster and more memory-efficient. GH 219
- XML::Document#create_entity will create new EntityDecl objects. GH 174
- JRuby FFI implementation no longer uses ObjectSpace._id2ref, instead using
Charles Nutter‘s rocking Weakling gem.
- Nokogiri::XML::Node#first_element_child fetch the first child node that is
an ELEMENT node.
- Nokogiri::XML::Node#last_element_child fetch the last child node that is an
ELEMENT node.
- Nokogiri::XML::Node#elements fetch all children nodes that are ELEMENT
nodes.
- Nokogiri::XML::Node#add_child, add_previous_sibling, before,
add_next_sibling, after, inner_html, swap and replace all now accept a
Node, DocumentFragment, NodeSet, or a string containing markup.
- Node#fragment? indicates whether a node is a DocumentFragment.
- Bugfixes
- XML::NodeSet is now always decorated (if the document has decorators). GH
198
- XML::NodeSet#slice gracefully handles offset+length larger than the set
length. GH 200
- XML::Node#content= safely unlinks previous content. GH 203
- XML::Node#namespace= takes nil as a parameter
- XML::Node#xpath returns things other than NodeSet objects. GH 208
- XSLT::StyleSheet#transform accepts hashes for parameters. GH 223
- Psuedo selectors inside not() work. GH 205
- XML::Builder doesn‘t break when nodes are unlinked. Thanks to vihai!
GH 228
- Encoding can be forced on the SAX parser. Thanks Eugene Pimenov! GH 204
- XML::DocumentFragment uses XML::Node#parse to determine children.
- Fixed a memory leak in xml reader. Thanks sdor! GH 244
- Node#replace returns the new child node as claimed in the RDoc. Previously
returned self.
- Notes
- The Windows gems now bundle DLLs for libxml 2.7.6 and libxslt 1.1.26. Prior
to this release, libxml 2.7.3 and libxslt 1.1.24 were bundled.
1.4.1 / 2009/12/10
- New Features
- Added Nokogiri::LIBXML_ICONV_ENABLED
- Alias Node#[] to Node#attr
- XML::Node#next_element added
- XML::Node#> added for searching a nodes immediate children
- XML::NodeSet#reverse added
- Added fragment support to Node#add_child, Node#add_next_sibling,
Node#add_previous_sibling, and Node#replace.
- XML::Node#previous_element implemented
- Rubinius support
- Ths CSS selector engine now supports :has()
- XML::NodeSet#filter() was added
- XML::Node.next= and .previous= are aliases for add_next_sibling and
add_previous_sibling. GH 183
- Bugfixes
- XML fragments with namespaces do not raise an exception (regression in
1.4.0)
- Node#matches? works in nodes contained by a DocumentFragment. GH 158
- Document should not define add_namespace() method. GH 169
- XPath queries returning namespace declarations do not segfault.
- Node#replace works with nodes from different documents. GH 162
- Adding XML::Document#collect_namespaces
- Fixed bugs in the SOAP4R adapter
- Fixed bug in XML::Node#next_element for certain edge cases
- Fixed load path issue with JRuby under Windows. GH 160.
- XSLT#apply_to will honor the "output method". Thanks
richardlehane!
- Fragments containing leading text nodes with newlines now parse properly.
GH 178.
1.4.0 / 2009/10/30
- Happy Birthday!
- New Features
- Node#at_xpath returns the first element of the NodeSet matching the XPath
expression.
- Node#at_css returns the first element of the NodeSet matching the CSS
selector.
- NodeSet#| for unions GH 119 (Thanks Serabe!)
- NodeSet#inspect makes prettier output
- Node#inspect implemented for more rubyish document inspecting
- Added XML::DTD#external_id
- Added XML::DTD#system_id
- Added XML::ElementContent for DTD Element content validity
- Better namespace declaration support in Nokogiri::XML::Builder
- Added XML::Node#external_subset
- Added XML::Node#create_external_subset
- Added XML::Node#create_internal_subset
- XML Builder can append raw strings (GH 141, patch from dudleyf)
- XML::SAX::ParserContext added
- XML::Document#remove_namespaces! for the namespace-impaired
- Bugfixes
- returns nil when HTML documents do not declare a meta encoding tag. GH 115
- Uses RbConfig::CONFIG[‘host_os’] to adjust
ENV[‘PATH’] GH 113
- NodeSet#search is more efficient GH 119 (Thanks Serabe!)
- NodeSet#xpath handles custom xpath functions
- Fixing a SEGV when XML::Reader gets attributes for current node
- Node#inner_html takes the same arguments as Node#to_html GH 117
- DocumentFragment#css delegates to it‘s child nodes GH 123
- NodeSet#[] works with slices larger than NodeSet#length GH 131
- Reparented nodes maintain their namespace. GH 134
- Fixed SEGV when adding an XML::Document to NodeSet
- XML::SyntaxError can be duplicated. GH 148
- Deprecations
- Hpricot compatibility layer removed
1.3.3 / 2009/07/26
- New Features
- NodeSet#children returns all children of all nodes
- Bugfixes
- Override libxml-ruby‘s global error handler
- ParseOption#strict fixed
- Fixed a segfault when sending an empty string to Node#inner_html= GH 88
- String encoding is now set to UTF-8 in Ruby 1.9
- Fixed a segfault when moving root nodes between documents. GH 91
- Fixed an O(n) penalty on node creation. GH 101
- Allowing XML documents to be output as HTML documents
- Deprecations
- Hpricot compatibility layer will be removed in 1.4.0
1.3.2 / 2009-06-22
- New Features
- Nokogiri::XML::DTD#validate will validate your document
- Bugfixes
- Nokogiri::XML::NodeSet#search will search top level nodes. GH 73
- Removed namespace related methods from Nokogiri::XML::Document
- Fixed a segfault when a namespace was added twice
- Made nokogiri work with Snow Leopard GH 79
- Mailing list has moved to: groups.google.com/group/nokogiri-talk
- HTML fragments now correctly handle comments and CDATA blocks. GH 78
- Nokogiri::XML::Document#clone is now an alias of dup
- Deprecations
- Nokogiri::XML::SAX::Document#start_element_ns is deprecated, please switch
to Nokogiri::XML::SAX::Document#start_element_namespace
- Nokogiri::XML::SAX::Document#end_element_ns is deprecated, please switch to
Nokogiri::XML::SAX::Document#end_element_namespace
1.3.1 / 2009-06-07
- Bugfixes
- extconf.rb checks for optional RelaxNG and Schema functions
- Namespace nodes are added to the Document node cache
1.3.0 / 2009-05-30
- New Features
- Builder changes scope based on block arity
- Builder supports methods ending in underscore similar to tagz
- Nokogiri::XML::Node#<=>
compares nodes based on Document position
- Nokogiri::XML::Node#matches? returns true if Node can be found with given
selector.
- Nokogiri::XML::Node#ancestors now returns an Nokogiri::XML::NodeSet
- Nokogiri::XML::Node#ancestors will match parents against optional selector
- Nokogiri::HTML::Document#meta_encoding for getting the meta encoding
- Nokogiri::HTML::Document#meta_encoding= for setting the meta encoding
- Nokogiri::XML::Document#encoding= to set the document encoding
- Nokogiri::XML::Schema for
validating documents against XSD schema
- Nokogiri::XML::RelaxNG
for validating documents against RelaxNG schema
- Nokogiri::HTML::ElementDescription
for fetching HTML element descriptions
- Nokogiri::XML::Node#description to fetch the node description
- Nokogiri::XML::Node#accept implements Visitor pattern
- bin/nokogiri for easily examining documents (Thanks Yutaka HARA!)
- Nokogiri::XML::NodeSet
now supports more Array and Enumerable operators: index, delete, slice, -
(difference), + (concatenation), & (intersection), push, pop, shift, ==
- Nokogiri.XML, Nokogiri.HTML take blocks that
receive Nokogiri::XML::ParseOptions
objects
- Nokogiri::XML::Node#namespace returns a Nokogiri::XML::Namespace
- Nokogiri::XML::Node#namespace= for setting a node‘s namespace
- Nokogiri::XML::DocumentFragment
and Nokogiri::HTML::DocumentFragment
have a sensible API and a more robust implementation.
- JRuby 1.3.0 support via FFI.
- Bugfixes
- Fixed a problem with nil passed to CDATA constructor
- Fragment method deals with regular expression characters (Thanks Joel!) LH
73
- Fixing builder scope issues LH 61, LH 74, LH 70
- Fixed a problem when adding a child could remove the child namespace LH#78
- Fixed bug with unlinking a node then reparenting it. (GH#22)
- Fixed failure to catch errors during XSLT parsing (GH#32)
- Fixed a bug with attribute conditions in CSS selectors (GH#36)
- Fixed intolerance of HTML attributes without values in
Node#before/after/inner_html=. (GH#35)
1.2.3 / 2009-03-22
- Bugfixes
- Fixing bug where a node is passed in to Node#new
- Namespace should be assigned on DocumentFragment creation. LH 66
- Nokogiri::XML::NodeSet#dup works GH 10
- Nokogiri::HTML returns an empty
Document when given a blank string GH#11
- Adding a child will remove duplicate namespace declarations LH 67
- Builder methods take a hash as a second argument
1.2.2 / 2009-03-14
- New features
- Nokogiri may be used with soap4r.
See XSD::XMLParser::Nokogiri
- Nokogiri::XML::Node#inner_html= to set the inner html for a node
- Nokogiri builder interface
improvements
- Nokogiri::XML::Node#swap swaps html for current node (LH 50)
- Bugfixes
- Fixed a tag nesting problem in the Builder API (LH 41)
- Nokogiri::HTML.fragment will properly handle text only nodes (LH 43)
- Nokogiri::XML::Node#before will prepend text nodes (LH 44)
- Nokogiri::XML::Node#after will append text nodes
- Nokogiri::XML::Node#search automatically registers root namepsaces (LH 42)
- Nokogiri::XML::NodeSet#search automatically registers namespaces
- Nokogiri::HTML::NamedCharacters delegates to libxml2
- Nokogiri::XML::Node#[] can
take a symbol (LH 48)
- vasprintf for windows updated. Thanks Geoffroy Couprie!
- Nokogiri::XML::Node#[]=
should not encode entities (LH 55)
- Namespaces should be copied to reparented nodes (LH 56)
- Nokogiri uses encoding set on the
string for default in Ruby 1.9
- Document#dup should create a new document of the same type (LH 59)
- Document should not have a parent method (LH 64)
1.2.1 / 2009-02-23
- Bugfixes
- Fixed a CSS selector space bug
- Fixed Ruby 1.9 String Encoding (Thanks 角谷さん!)
1.2.0 / 2009-02-22
- New features
- CSS search now supports CSS3 namespace queries
- Namespaces on the root node are automatically registered
- CSS queries use the default namespace
- Nokogiri::XML::Document#encoding get encoding used for this document
- Nokogiri::XML::Document#url get the document url
- Nokogiri::XML::Node#add_namespace add a namespace to the node LH#38
- Nokogiri::XML::Node#each iterate over attribute name, value pairs
- Nokogiri::XML::Node#keys get all attribute names
- Nokogiri::XML::Node#line get the line number for a node (Thanks Dirkjan
Bussink!)
- Nokogiri::XML::Node#serialize now takes an optional encoding parameter
- Nokogiri::XML::Node#to_html, to_xml, and to_xhtml take an optional encoding
- Nokogiri::XML::Node#to_str
- Nokogiri::XML::Node#to_xhtml to produce XHTML documents
- Nokogiri::XML::Node#values get all attribute values
- Nokogiri::XML::Node#write_to writes the node to an IO object with optional
encoding
- Nokogiri::XML::ProcessingInstrunction.new
- Nokogiri::XML::SAX::PushParser
for all your push parsing needs.
- Bugfixes
- Fixed Nokogiri::XML::Document#dup
- Fixed header detection. Thanks rubikitch!
- Fixed a problem where invalid CSS would cause the parser to hang
- Deprecations
- Nokogiri::XML::Node.new_from_str will be deprecated in 1.3.0
- API Changes
- Nokogiri::HTML.fragment now returns an XML::DocumentFragment (LH 32)
1.1.1
- New features
- Added XML::Node#elem?
- Added XML::Node#attribute_nodes
- Added XML::Attr
- XML::Node#delete added.
- XML::NodeSet#inner_html added.
- Bugfixes
- Not including an HTML entity for \r for HTML nodes.
- Removed CSS::SelectorHandler and XML::XPathHandler
- XML::Node#attributes returns an Attr node for the value.
- XML::NodeSet implements to_xml
1.1.0
- New Features
- Custom XPath functions are now supported. See Nokogiri::XML::Node#xpath
- Custom CSS pseudo classes are now supported. See Nokogiri::XML::Node#css
- Nokogiri::XML::Node#<<
will add a child to the current node
- Bugfixes
- Mutex lock on CSS cache access
- Fixed build problems with GCC 3.3.5
- XML::Node#to_xml now takes an indentation argument
- XML::Node#dup takes an optional depth argument
- XML::Node#add_previous_sibling returns new sibling node.
1.0.7
- Bugfixes
- Fixed memory leak when using Dike
- SAX parser now parses IO streams
- Comment nodes have their own class
- Nokogiri() should delegate to Nokogiri.parse()
- Prepending rather than appending to ENV[‘PATH’] on windows
- Fixed a bug in complex CSS negation selectors
1.0.6
- 5 Bugfixes
- XPath Parser raises a SyntaxError on parse failure
- CSS Parser raises a SyntaxError on parse failure
- filter() and not() hpricot compatibility added
- CSS searches via Node#search are now always relative
- CSS to XPath conversion is now cached
1.0.5
- Bugfixes
- Added mailing list and ticket tracking information to the README.txt
- Sets ENV[‘PATH’] on windows if it doesn‘t exist
- Caching results of NodeSet#[] on Document
1.0.4
- Bugfixes
- Changed memory mangement from weak refs to document refs
- Plugged some memory leaks
- Builder blocks can call methods from surrounding contexts
1.0.3
- 5 Bugfixes
- NodeSet now implements to_ary
- XML::Document should not implement parent
- More GC Bugs fixed. (Mike is AWESOME!)
- Removed RARRAY_LEN for 1.8.5 compatibility. Thanks Shane Hanna.
- inner_html fixed. (Thanks Yehuda!)
1.0.2
- 1 Bugfix
- extconf.rb should not check for frex and racc
1.0.1
- 1 Bugfix
- Made sure extconf.rb searched libdir and prefix so that ports libxml/ruby
will link properly. Thanks lucsky!
1.0.0 / 2008-07-13