CMarkup Release 8.3
October 19, 2006
This release implements an alternative to strerror
for Windows CE, a couple of fixes and a method in the developer version to get the level of the current element.
strerror
function used since release 7.0.
The following items pertain exclusively to CMarkup Developer: |
CMarkup Release 8.2
February 12, 2006
This release adds user bit flags to elements for support of the new virtual tree control class, and navigation based on attribute value in the paths feature of the Developer version.
0xf000000
for user-defined usage such as the tree node display state (expanded or not) in the CMarkupTreeCtrl
. This feature is only for temporary conditions that are not to be persisted in the XML document itself.
The following items pertain exclusively to CMarkup Developer: |
[@attrib='value']
. See Paths In CMarkupCMarkup Release 8.1
August 17, 2005
This is a follow-up release with minor enhancements and fixes.
strnicmp
as _strnicmp
on VC++ 6.0 forward (see CMarkup STL Platforms)SetMainPosPtr
was added to aid in setting the position after an external call to selectSingleNode
or selectNodes
(see MSXML Wrapper CMarkupMSXML)<a href=dir/>..</a>
as an empty element
The following items pertain exclusively to CMarkup Developer: |
pnInStart
) argument now returns equal to the start (pnStart
) for empty elements, and GetOffsets now also returns offsets for non-element nodesCMarkup Release 8.0
July 12, 2005
HTML support in CMarkup headlines this major release that includes generic markup, XML content fragments, XML log files with no root element, and a feature in the developer version to easily find an element anywhere in the document.
#import
MSXML DLL compiler bug no_function_mapping
work-around for MSXML 3.0 and 4.0 builds, see MSXML 3.0 in CMarkupMSXML
The following items pertain exclusively to CMarkup Developer: |
//A
, simple predicates [n] [@attrib] and [CHILDELEM], new method GetElemPath (in CMarkupMSXML too) returns path of main position element, and CMarkupMSXML absolute path changed to work the same as CMarkup. See Paths In CMarkupx_FindElem
to set position in copied objectCMarkup Release 7.3
December 5, 2004
This release introduces WriteTextFile and ReadTextFile utility functions, and adds integer data value overloads of AddElem and similar methods. The Developer Version has improved the MBCS
build of MFC CMarkup to convert UTF-8 documents to ANSI upon load. If you are upgrading, please read these notes carefully for changes in AddElem and ANSI charset conversion that might affect your project.
AddElem("tagname",NULL)
will now be ambiguous since there is no type information for NULL
so if you want no content instead of a 0 (zero) use AddElem("tagname")
SetDefaultNamespace
method to set the default namespace for document creation. MSXML does not allow you to simply set the xmlns attribute in the root element; it is an argument to the creation of each element node. Call this method once before adding elements to the new CMarkupMSXML object *noted by Steve Reilly
The following items pertain exclusively to CMarkup Developer: |
MBCS
build of MFC CMarkup now converts Unicode file to ANSI on read (UTF8ToA), and back to Unicode on write (AToUTF8). This conversion in the MBCS build is a change from the previous release; always use an XML declaration to specify encoding if your file is not Unicode!CMarkup Release 7.2
September 27, 2004
This release introduces several small improvements. SetData splits CDATA Sections containing the end delimiter string, and GetData concatenates CDATA Section and text nodes. In other words, when SetData is called with the CDATA Section flag, it now creates multiple CDATA Sections when the data contains ]]>
, but note that AddNode(MNT_CDATA_SECTION,data)
still returns false
if the data contains the end string. The highlights of this release are:
nCDATA
flag will split CDATA Sections to support the ]]>
end string rather than reverting to a parsed text node (also implemented in CMarkupMSXML which prior to Release 7.2 would throw an exception)
The following items pertain exclusively to CMarkup Developer: |
MDF_UTF16LEFILE
, see UTF-16 Files and the Byte Order Mark (BOM)CMarkup Release 7.1
August 28, 2004
This is primarily a bug fix release. If you are using 7.0, please upgrade! CMarkup 7.0 overhauled indexing and parsing and a few new bugs made it into the release. These bugs plus a couple other issues have been fixed and the test routines updated.
#include
for <string.h>
and <errno.h>
in MarkupSTL.cpp to support strerror(errno)
, NETWARE compiler was not getting errno
*thanks Frank SowinskiCMarkup Release 7.0
July 17, 2004
25% faster, and smaller footprint! This is an overhaul of the indexing and parsing technology yielding new features and efficiencies while remaining backward compatible in the public methods. The CMarkup parser was already extremely fast, but the new parsing implementation is 25% faster. New double-linking means faster adding of last sibling element and removing elements. There are quite a few new features:
CMap
and map
with small efficient internal structure, reducing MFC/STL dependence to string class only, and reducing overall CMarkup object instantiation footprint by 20%
loadXML
as introduced in Release 6.6, loadXML
with non-BSTR was generating a stack overflow on multi-megabyte documents, so CMarkupMSXML::SetDoc
has been changed back to converting to BSTR first
The following items pertain exclusively to CMarkup Developer: |
CMarkup Release 6.6
May 3, 2004
This release enhances the index memory implementation for handling large documents. Plus, the Developer version has improved UTF-16 file support and charset conversions.
CArray/vector
to enhance memory efficiency for large multi-megabyte documents. This new array class improves parsing performance (about 3%), and has a smaller footprint than the replaced classCFile
or allocator
)false
in constructor: _bstr_t bstrDoc(A2BSTR(szDoc),false);
*thanks DharmeshloadXML
so A2BSTR
only used prior to MSXML 3.0const &
*thanks Tom Spilman
The following items pertain exclusively to CMarkup Developer: |
CMarkup Release 6.5
April 23, 2003
This release adds support for end-of-line customization, numeric character references, as well as MSXML 4.0, .NET compiling, and MBCS improvements. There are quite a few fixes and Documentation updates too.
x_EOL
for customizing the end-of-line in document creation and modification. It can be changed to UNIX style \n
or empty if you want the whole document on one linex_ATTRIBQUOTE
for using single quote when creating attributes<
and 中
are decodedint
x_TextToDoc
*thanks knight_zhugex_TextFromDoc
due to #ifndef _tclen
added in 6.3. It was changed to #ifdef _WIN32_WCE
CoUninitialize
in CMarkupMSXML *thanks Robert Bouwens
The following items pertain exclusively to CMarkup Developer: |
CMarkup Release 6.4
October 7, 2002
A lot of work has been done on the CDataEdit Class making it stable enough for release in the new free promotional editor. As of 6.4, CMarkup comes with a Test Dialog project and improved testing of the different CMarkup builds. This release also includes several fixes and new methods.
CMarkupDlg::RunTest
run at start upUNICODE
DecodeBase64, attention Windows CE developers! *noted by Eric from France#include <stdio.h>
added to MarkupSTL.cpp for compiling on G++ Linux
The following items pertain exclusively to CMarkup Developer: |
CMarkup Release 6.3
April 2, 2002
This major overhaul of the CMarkup classes introduces the long-awaited intuitive IntoElem method making main position methods more useful, and there are new ResetMainPos and InsertElem methods. Caution: The change to IntoElem is not completely backwards compatible with 6.2 because now it will not look for the first child if there is no current child position. Few corners of the CMarkup, CMarkupSTL, and CMarkupMSXML classes have escaped re-working due to the implementation of 6.2 bug fixes, parent position logic, and node support. The result is across the board improvements in efficiency and consistency of method functionality and source code.
CMarkupApp::OnAppTest
The following items pertain exclusively to CMarkup Developer: |
Comments and mixed content are now supported in the developer version via nodes with the FindNode, AddNode, InsertNode, RemoveNode, and GetNodeType methods. You can navigate, create and modify comments, processing instructions, text nodes, CDATA sections and elements, as well as the DTD (as a whole). These new methods were carefully designed to blend naturally into EDOM and complement the element-based methods. EDOM still revolves around elements. In the CMarkup object, only 3 new integers were added to the object to track the current node, so no noteable new overhead is incurred. During document parsing, CMarkup still only calculates element indexes so there is no affect on parser performance.
CMarkup Release 6.2
November 1, 2001
This release speeds up name comparisons and adds a debugging aid.
The following items pertain exclusively to CMarkup Developer: |
csStatus = doc.FindGetData("/*/OrderStatus")
CMarkup Release 6.1
August 1, 2001
This release has numerous fixes, enhancements, and some new EDOM methods. And we introduce a lite version on the The Code Project so that now the firstobject site is the only place to download the full evaluation version.
MBCS
define and _tccpy
and _tclen
MFC routines. This is not compatible with UTF-8, so if you are using UTF-8 in MFC check your project settings C/C++ preprocessor definitions to make sure _MBCS
is not defined.#include "stdafx.h"
has been removed along with all dependency on it. This was an MFC-ism that should have been removed a long time ago.CDataEdit
is now extremely fast on huge documents. Note that some edit functionality is not complete yet. Look for these fixes, syntax coloring and other XML features in future releases.x_TextToDoc
and x_TextFromDoc
to reserve size and reduce reallocations.
The following items pertain exclusively to CMarkup Developer: |
CMarkup Release 6.0
July 9, 2001
UTF-8 support is completed with an enhanced CDataEdit
that demonstrates UTF-8 and Wide-Char Win32 APIs in a non-UNICODE build (see UTF-8 in CMarkup and CDataEdit). Parse errors are now displayed in the status bar, including (in the MSXML build) the "reasons" provided by the MSXML service. Index array sizing is smarter to improve the efficiency of parsing.
The following items pertain exclusively to CMarkup Developer: |
Base64 support is now available as methods in CMarkup for encoding and decoding a binary buffer. A new enhancement has improved the way the document string grows when building documents using the creation and modification methods. This reduces reallocations in both the MFC and STL versions and greatly speeds the creation of medium to large documents.
CMarkup Release 5.7
June 29, 2001
This release introduces UTF-8 support in the Windows NT UNICODE build, and the parser will now look past simple DTD sections (!DOCTYPE tags). A new edit control was built from scratch to replace the richedit control and support unicode better. This edit control does specialized text wrapping on tags, and may support XML syntax highlighting in the future. However, in this release it is suitable for viewing but not editing large documents because it recalculates the entire document on each keystroke.
CDataEdit
control replaces CRichEditCtrl
CMarkup Release 5.6
June 1, 2001
CDATA sections is the highlight of this release. Until now, CMarkupMSXML had non-EDOM methods called AddCDATA and GetCDATA, but CDATA sections have been standardized as part of the Get/SetData methods across all the CMarkup classes and it was made a part of EDOM.
Add/Insert[Child]Elem
method *thanks to PliniusCMarkup Release 5.5
April 13, 2001
The heretofore missing Set/GetData methods are now included, and subdocument support is now in STL and MSXML versions.
CMarkup Release 5.4
April 4, 2001
This includes a lot of important fixes and code enhancements.
CMarkup Release 5.3
March 23, 2001
This release introduces the STL version which everyone was asking for. And a very useful addition to EDOM is the subdocument methods which are implemented here in the MFC version of CMarkup only.
CMarkup Release 5.2
March 20, 2001
To implement the Unicode version, the MFC CMarkup class and the Markup project now use _T()
and _TCHAR
defines, so that the project can be compiled for unicode. The resulting Unicode executable works in Windows NT and CE.
CMarkup Release 5.1
March 7, 2001
Based on first Code Project user comments, more EDOM methods and basic support for comments have been implemented. A build configuration for the version that uses MSXML makes it easier to try CMarkupMSXML. And the EDOM documentation has been greatly improved.
InsertElemBefore
to InsertChildElem to be in line with naming conventionCMarkup Release 5 and Previous Releases
February 11, 2001
CMarkup was originally developed in January 1999 and posted on the firstobject.com site on May 16, 1999. It was billed as a class to perform simple XML document parsing and creation by just adding markup.cpp and markup.h to your Visual C++ 6.0 project. It was used primarily in projects of First Objective Software and clients. The second release was made available on January 22, 2000 with some additional methods. On October 30, 2000, the EDOM draft specification was put up and CMarkup release 3 methods were brought to comply with it, though not all of the methods were implemented. Release 4 on November 6, 2000 introduced the Markup MFC MDI project allowing you to see CMarkup
in action. We added the CMarkupMSXML
class which had cut its teeth in an intensive communications application for 10 months. This was a useful resource because of the rarity of examples of using MSXML from C. Release 4.2 on January 6, 2001 contained some bug fixes. Finally for February 11, 2001, the Markup project was cleaned up, packaged as Release 5 and submitted to The Code Project for its first real exposure to developers not familiar with First Objective Software, Inc.
CMarkup Release 9.0
April 1, 2007
Now with STL/UNICODE out of the box, this release does away with the separated CMarkupSTL class in favor of compiling CMarkup for either STL string or MFC CString. See Unified CMarkup for STL and MFC.
CMarkupSTL
" in their code to "CMarkup
," use Markup.cpp/.h instead of MarkupSTL.cpp/.h, and putMARKUP_STL
in their project defines. See Unified CMarkup for STL and MFC.UNICODE
andMBCS
support.ToBSTR
FromBSTR
ToVARIANT
FromVARIANT
utility functions to simplify code and perform correct conversions to and from wide char in non-UNICODE
builds.The following items pertain exclusively to CMarkup Developer:
[CHILDTAG]
of Find methods utilizing paths, e.g.FindElem("/root/B[ID]/C")
.