Release v1.1.0

New Features

  • New attribute helpers.
    • Added the Element.SortAttrs method, which lexicographically sorts an element's attributes by key.
  • New ReadSettings properties.
    • Added Entity for the support of custom entity maps.
  • New WriteSettings properties.
    • Added UseCRLF to allow the output of CR-LF newlines instead of the default LF newlines. This is useful on Windows systems.
  • Additional support for text and CDATA sections.
    • The Element.Text method now returns the concatenation of all consecutive character data tokens immediately following an element's opening tag.
    • Added Element.SetCData to replace the character data immediately following an element's opening tag with a CDATA section.
    • Added Element.CreateCData to create and add a CDATA section child CharData token to an element.
    • Added Element.CreateText to create and add a child text CharData token to an element.
    • Added NewCData to create a parentless CDATA section CharData token.
    • Added NewText to create a parentless text CharData token.
    • Added CharData.IsCData to detect if the token contains a CDATA section.
    • Added CharData.IsWhitespace to detect if the token contains whitespace inserted by one of the document Indent functions.
    • Modified Element.SetText so that it replaces a run of consecutive character data tokens following the element's opening tag (instead of just the first one).
  • New “tail text” support.
    • Added the Element.Tail method, which returns the text immediately following an element's closing tag.
    • Added the Element.SetTail method, which modifies the text immediately following an element's closing tag.
  • New element child insertion and removal methods.
    • Added the Element.InsertChildAt method, which inserts a new child token before the specified child token index.
    • Added the Element.RemoveChildAt method, which removes the child token at the specified child token index.
  • New element and attribute queries.
    • Added the Element.Index method, which returns the element‘s index within its parent element’s child token list.
    • Added the Element.NamespaceURI method to return the namespace URI associated with an element.
    • Added the Attr.NamespaceURI method to return the namespace URI associated with an element.
    • Added the Attr.Element method to return the element that an attribute belongs to.
  • New Path filter functions.
    • Added [local-name()='val'] to keep elements whose unprefixed tag matches the desired value.
    • Added [name()='val'] to keep elements whose full tag matches the desired value.
    • Added [namespace-prefix()='val'] to keep elements whose namespace prefix matches the desired value.
    • Added [namespace-uri()='val'] to keep elements whose namespace URI matches the desired value.

Bug Fixes

  • A default XML CharSetReader is now used to prevent failed parsing of XML documents using certain encodings. (Issue).
  • All characters are now properly escaped according to XML parsing rules. (Issue).
  • The Document.Indent and Document.IndentTabs functions no longer insert empty string CharData tokens.

Deprecated

  • Element
    • The InsertChild method is deprecated. Use InsertChildAt instead.
    • The CreateCharData method is deprecated. Use CreateText instead.
  • CharData
    • The NewCharData method is deprecated. Use NewText instead.

Release v1.0.1

Changes

  • Added support for absolute etree Path queries. An absolute path begins with / or // and begins its search from the element's document root.
  • Added GetPath and GetRelativePath functions to the Element type.

Breaking changes

  • A path starting with // is now interpreted as an absolute path. Previously, it was interpreted as a relative path starting from the element whose FindElement method was called. To remain compatible with this release, all paths prefixed with // should be prefixed with .// when called from any element other than the document's root.
  • [edit 2/1/2019]: Minor releases should not contain breaking changes. Even though this breaking change was very minor, it was a mistake to include it in this minor release. In the future, all breaking changes will be limited to major releases (e.g., version 2.0.0).

Release v1.0.0

Initial release.