CHANGELOG.rdoc

Path: CHANGELOG.rdoc
Last Update: Wed Feb 20 16:40:03 +0100 2013

1.5.6 / unreleased

  • Features
    • Improved performance of XML::Document#collect_namespaces. 761 (Thanks, Juergen Mangler!)
    • New callback SAX::Document#processing_instruction (Thanks, Kitaiti Makoto!)
    • Node#native_content= allows setting unescaped node contant. 768
    • XPath lookup with namespaces supports symbol keys. 729 (Thanks, Ben Langfeld.)
    • XML::Node#[]= stringifies values. 729 (Thanks, Ben Langfeld.)
    • bin/nokogiri will process a document from $stdin
    • bin/nokogiri -e will execute a program from the command line
    • bin/nokogiri —version will print the Xerces and NekoHTML versions when ran with JRuby.
  • Bugfixes
    • Nokogiri now detects XSLT transform errors. 731 (Thanks, Justin Fitzsimmons!)
    • Don‘t throw an Error when trying to replace top-level text node in DocumentFragment. 775
    • Raise an ArgumentError if an invalid encoding is passed to the SAX parser. 756 (Thanks, Bradley Schaefer!)
    • [JRuby] space prior to xml preamble causes nokogiri to fail parsing. (fixed along with 748) 790
    • [JRuby] Fixed the bug Nokogiri::XML::Node#content inconsistency between Java and C. 794, 797
    • [JRuby] raises INVALID_CHARACTER_ERR exception when EntityReference name starts with ’#’. 719
    • [JRuby] doesn‘t coerce namespaces out of strings on a direct subclass of Node. 715
    • [JRuby] Node#content now renders newlines properly. 737 (Thanks, Piotr Szmielew!)
    • [JRuby] Unknown namespace are ignore when the recover option is used. 748
    • [JRuby] XPath queries for namespaces should not throw exceptions when called twice in a row. 764
    • [JRuby] More consistent (with libxml2) whitespace formatting when emitting XML. 771
    • [JRuby] namespaced attributes broken when appending raw xml to builder. 770
    • [JRuby] Nokogiri::XML::Document#wrap raises undefined method `length’ for nil:NilClass when trying to << to a node. 781
    • [JRuby] Fixed "bad file descriptor" bug when closing open file descriptors. 495
    • [JRuby] JRuby/CRuby incompatibility for attribute decorators. 785
    • [JRuby] Issues parsing valid XML with no internal subset in the DTD. 547, 811
    • [JRuby] Issues parsing valid node content when it contains colons. 728
    • [JRuby] Correctly parse the doc type of html documents. 733
    • [JRuby] Include dtd in the xml output when a builder is used with create_internal_subset. 751
    • [JRuby] builder requires textwrappers for valid utf8 in jruby, not in mri. 784

1.5.5 / 2012-06-24

  • Features
    • Much-improved support for JRuby in 1.9 mode! Yay!
  • Bugfixes
    • Regression in JRuby Nokogiri add_previous_sibling (1.5.0 -> 1.5.1) 691 (Thanks, John Shahid!)
    • JRuby unable to create HTML doc if URL arg provided 674 (Thanks, John Shahid!)
    • JRuby raises NullPointerException when given HTML document is nil or empty string. 699
    • JRuby 1.9 error, uncaught throw ‘encoding_found’, has been fixed. 673
    • Invalid encoding returned in JRuby with US-ASCII. 583
    • XmlSaxPushParser raises IndexOutOfBoundsException when over 512 characters are given. 567, 615
    • When xpath evaluation returns empty NodeSet, decorating NodeSet‘s base document raises exception. 514
    • JRuby raises exception when xpath with namespace is specified. pull request 681 (Thanks, Piotr Szmielew)
    • JRuby renders nodes without their namespace when subclassing Node. 695
    • JRuby raises NAMESPACE_ERR (org.w3c.dom.DOMException) while instantiating RDF::RDFXML::Writer. 683
    • JRuby is not able to use namespaces in xpath. 493
    • JRuby‘s Entity resolving should be consistent with C-Nokogiri 704, 647, 703

1.5.4 / 2012-06-12

  • Features
    • The "nokogiri" script now has more verbose output when passed the `—rng` option. 675 (Thanks, Dan Radez!)
    • Build support on hardened Debian systems that use `-Werror=format-security`. 680.
    • Better build support for systems with pkg-config. 584
    • Better build support for systems with multiple iconv installations.
  • Bugfixes
    • Segmentation fault when creating a comment node for a DocumentFragment. 677, 678.
    • Treat ’.’ as xpath in at() and search(). 690
    • [MRI, Security] Default parse options for XML documents were changed to not make network connections during document parsing, to avoid XXE vulnerability. 693

      To re-enable this behavior, the configuration method `nononet` may be called, like this:

      Nokogiri::XML::Document.parse(xml) { |config| config.nononet }

      Insert your own joke about double-negatives here.

1.5.3 / 2012-06-01

  • Features
    • Support for "prefixless" CSS selectors ~, > and + like jQuery supports. 621, 623. (Thanks, David Lee!)
    • Attempting to improve installation on homebrew 0.9 (with regards to iconv). Isn‘t package management convenient?
  • Bugfixes
    • Custom xpath functions with empty nodeset arguments cause a segfault. 634.
    • Nokogiri::XML::Node#css now works for XML documents with default namespaces when the rule contains attribute selector without namespace.
    • Fixed marshalling bugs around how arguments are passed to (and returned from) XSLT custom xpath functions. 640.
    • Nokogiri::XML::Reader#outer_xml is broken in JRuby 617
    • Nokogiri::XML::Attribute on JRuby returns a nil namespace 647
    • Nokogiri::XML::Node#namespace= cannot set a namespace without a prefix on JRuby 648
    • [JRuby] 1.9 mode causes dead lock while running rake 571
    • HTML::Document#meta_encoding does not raise exception on docs with malformed content-type. 655
    • Fixing segfault related to unsupported encodings in in-context parsing on 1.8.7. 643
    • [JRuby] Concurrency issue in XPath parsing. 682

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
    • See changelog from 1.4.7
  • 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

  • Notes
    • See changelog from 1.4.3

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 namespaces (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 management 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

  • 1 major enhancement
    • Birthday!

[Validate]