* added an improved but incompatible TXMLConfig from Sergei Gorelkin

git-svn-id: trunk@6897 -
This commit is contained in:
michael 2007-03-16 23:14:10 +00:00
parent 2eb6ef9d52
commit d7752d3c69
4 changed files with 552 additions and 127 deletions

1
.gitattributes vendored
View File

@ -4250,6 +4250,7 @@ packages/fcl-xml/src/wtagsimpl.inc svneol=native#text/plain
packages/fcl-xml/src/wtagsintf.inc svneol=native#text/plain
packages/fcl-xml/src/xhtml.pp svneol=native#text/plain
packages/fcl-xml/src/xmlcfg.pp svneol=native#text/plain
packages/fcl-xml/src/xmlconf.pp svneol=native#text/plain
packages/fcl-xml/src/xmlread.pp svneol=native#text/plain
packages/fcl-xml/src/xmlstreaming.pp svneol=native#text/plain
packages/fcl-xml/src/xmlutils.pp svneol=native#text/plain

View File

@ -1,8 +1,8 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/03/04]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/02/27]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-embedded
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx
LIMIT83fs = go32v2 os2 emx watcom
@ -233,316 +233,310 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(F
override PACKAGE_NAME=fcl-xml
override PACKAGE_VERSION=2.0.0
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-gba)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-nds)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-symbian)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),m68k-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),sparc-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-gba)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-nds)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),arm-symbian)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_RSTS+=sax xpath htmlwriter
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override TARGET_RSTS+=sax xpath htmlwriter
override TARGET_RSTS+=sax xpath htmlwriter xmlconf
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
@ -695,9 +689,6 @@ endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override COMPILER_OPTIONS+=-S2h
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override COMPILER_OPTIONS+=-S2h
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override COMPILER_OPTIONS+=-S2h
endif
@ -851,9 +842,6 @@ endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override COMPILER_SOURCEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override COMPILER_SOURCEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override COMPILER_SOURCEDIR+=src
endif
@ -1991,15 +1979,6 @@ REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
REQUIRE_PACKAGES_HASH=1
REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1

View File

@ -7,8 +7,8 @@ name=fcl-xml
version=2.0.0
[target]
units=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter
rsts=sax xpath htmlwriter
units=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
rsts=sax xpath htmlwriter xmlconf
[require]
packages=netdb fcl-base

View File

@ -0,0 +1,445 @@
{
This file is part of the Free Component Library
Implementation of TXMLConfig class
Copyright (c) 1999 - 2005 by Sebastian Guenther, sg@freepascal.org
Modified in 2007 by Sergei Gorelkin, sergei_gorelkin@mail.ru
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
{
TXMLConfig enables applications to use XML files for storing their
configuration data
}
{$IFDEF FPC}
{$MODE objfpc}
{$H+}
{$ENDIF}
unit XMLConf;
interface
uses
SysUtils, Classes, DOM, XMLRead, XMLWrite;
resourcestring
SWrongRootName = 'XML file has wrong root element name';
type
EXMLConfigError = class(Exception);
TPathFlags = set of (pfHasValue, pfWriteAccess);
{"APath" is the path and name of a value: A XML configuration file is
hierachical. "/" is the path delimiter, the part after the last "/"
is the name of the value. The path components will be mapped to XML
elements, the name will be an element attribute.}
TXMLConfig = class(TComponent)
private
FFilename: String;
FStartEmpty: Boolean;
FRootName: DOMString;
FDummy: DOMString;
FPathStack: array of WideString;
FPathCount: Integer;
FPathDirty: Boolean;
FElement: TDOMElement;
procedure DoSetFilename(const AFilename: String; ForceReload: Boolean);
procedure SetFilename(const AFilename: String);
procedure SetStartEmpty(AValue: Boolean);
procedure SetRootName(const AValue: DOMString);
function DoFindNode(const APath: WideString; var Ident: DOMString;
Flags: TPathFlags): TDomElement;
function FindNode(const APath: WideString; out Ident: DOMString;
Flags: TPathFlags): TDOMElement;
protected
Doc: TXMLDocument;
FModified: Boolean;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Clear;
procedure Flush; // Writes the XML file
procedure OpenKey(const aPath: WideString);
procedure CloseKey;
procedure ResetKey;
function GetValue(const APath: WideString; const ADefault: WideString): WideString; overload;
function GetValue(const APath: WideString; ADefault: Integer): Integer; overload;
function GetValue(const APath: WideString; ADefault: Boolean): Boolean; overload;
procedure SetValue(const APath: WideString; const AValue: WideString); overload;
procedure SetValue(const APath: WideString; AValue: Integer); overload;
procedure SetValue(const APath: WideString; AValue: Boolean); overload;
procedure SetDeleteValue(const APath: WideString; const AValue, DefValue: WideString); overload;
procedure SetDeleteValue(const APath: WideString; AValue, DefValue: Integer); overload;
procedure SetDeleteValue(const APath: WideString; AValue, DefValue: Boolean); overload;
procedure DeletePath(const APath: WideString);
procedure DeleteValue(const APath: WideString);
property Modified: Boolean read FModified;
published
property Filename: String read FFilename write SetFilename;
property StartEmpty: Boolean read FStartEmpty write SetStartEmpty;
property RootName: DOMString read FRootName write SetRootName;
end;
// ===================================================================
implementation
constructor TXMLConfig.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FRootName := 'CONFIG';
Doc := TXMLDocument.Create;
Doc.AppendChild(Doc.CreateElement(FRootName));
end;
destructor TXMLConfig.Destroy;
begin
if Assigned(Doc) then
begin
Flush;
Doc.Free;
end;
inherited Destroy;
end;
procedure TXMLConfig.Clear;
begin
Doc.ReplaceChild(Doc.CreateElement(FRootName), Doc.DocumentElement);
end;
procedure TXMLConfig.Flush;
begin
if Modified then
begin
WriteXMLFile(Doc, Filename);
FModified := False;
end;
end;
function TXMLConfig.GetValue(const APath: WideString; const ADefault: WideString): WideString;
var
Node: TDOMElement;
Attr: TDOMAttr;
Ident: DOMString;
begin
Result := ADefault;
Node := FindNode(APath, Ident, [pfHasValue]);
if Assigned(Node) then
begin
Attr := Node.GetAttributeNode(Ident);
if Assigned(Attr) then
Result := Attr.NodeValue;
end;
end;
function TXMLConfig.GetValue(const APath: WideString; ADefault: Integer): Integer;
begin
Result := StrToIntDef(GetValue(APath, ''),ADefault);
end;
function TXMLConfig.GetValue(const APath: WideString; ADefault: Boolean): Boolean;
var
s: DOMString;
begin
s := GetValue(APath, '');
if WideSameText(s, 'TRUE') then
Result := True
else if WideSameText(s, 'FALSE') then
Result := False
else
Result := ADefault;
end;
procedure TXMLConfig.SetValue(const APath: WideString; const AValue: WideString);
var
Node: TDOMElement;
Attr: TDOMAttr;
Ident: DOMString;
begin
Node := FindNode(APath, Ident, [pfHasValue, pfWriteAccess]);
Attr := Node.GetAttributeNode(Ident);
if (Attr = nil) or (Attr.NodeValue <> AValue) then
begin
Node[Ident] := AValue;
FModified := True;
end;
end;
procedure TXMLConfig.SetDeleteValue(const APath: WideString; const AValue, DefValue: WideString);
begin
if AValue = DefValue then
DeleteValue(APath)
else
SetValue(APath, AValue);
end;
procedure TXMLConfig.SetValue(const APath: WideString; AValue: Integer);
begin
SetValue(APath, IntToStr(AValue));
end;
procedure TXMLConfig.SetDeleteValue(const APath: WideString; AValue,
DefValue: Integer);
begin
if AValue = DefValue then
DeleteValue(APath)
else
SetValue(APath, AValue);
end;
procedure TXMLConfig.SetValue(const APath: WideString; AValue: Boolean);
begin
if AValue then
SetValue(APath, 'True')
else
SetValue(APath, 'False');
end;
procedure TXMLConfig.SetDeleteValue(const APath: WideString; AValue,
DefValue: Boolean);
begin
if AValue = DefValue then
DeleteValue(APath)
else
SetValue(APath,AValue);
end;
procedure TXMLConfig.DeletePath(const APath: WideString);
var
Node: TDomNode;
Ident: DOMString;
begin
Node := FindNode(APath, Ident, []);
if Assigned(Node) and Assigned(Node.ParentNode) then
begin
Node.ParentNode.RemoveChild(Node);
FPathDirty := True;
FElement := nil;
FModified := True;
end;
end;
procedure TXMLConfig.DeleteValue(const APath: WideString);
var
Node: TDOMElement;
Ident: DOMString;
Parent: TDOMNode;
begin
Node := FindNode(APath, Ident, [pfHasValue]);
if Assigned(Node) then
begin
if Assigned(Node.GetAttributeNode(Ident)) then
begin
Node.RemoveAttribute(Ident);
FModified := True;
end;
while (Node.FirstChild=nil) and Assigned(Node.ParentNode)
and Assigned(Node.ParentNode.ParentNode) do
begin
if Node.HasAttributes then
Break;
Parent := Node.ParentNode;
Parent.RemoveChild(Node);
Node := TDOMElement(Parent);
FPathDirty := True;
FElement := nil;
FModified := True;
end;
end;
end;
procedure TXMLConfig.Loaded;
begin
inherited Loaded;
if Length(Filename) > 0 then
SetFilename(Filename); // Load the XML config file
end;
// TODO: copied from dom.pp, make public there and delete here
function CompareDOMStrings(const s1, s2: DOMPChar; l1, l2: integer): integer;
var i: integer;
begin
Result:=l1-l2;
i:=0;
while (i<l1) and (Result=0) do begin
Result:=ord(s1[i])-ord(s2[i]);
inc(i);
end;
end;
function TXMLConfig.FindNode(const APath: WideString; out Ident: DOMString;
Flags: TPathFlags): TDOMElement;
var
I: Integer;
begin
if FPathDirty then
begin
for I := 0 to FPathCount-1 do
FElement := DoFindNode(FPathStack[I], FDummy, Flags - [pfHasValue]);
FPathDirty := False;
end;
Result := DoFindNode(APath, Ident, Flags);
end;
function TXMLConfig.DoFindNode(const APath: WideString; var Ident: DOMString;
Flags: TPathFlags): TDomElement;
var
StartPos, EndPos: integer;
PathLen: integer;
Child: TDOMNode;
begin
if Assigned(FElement) and (Length(APath) > 0) and (APath[1] <> '/') then
Result := FElement
else
Result := Doc.DocumentElement;
PathLen := Length(APath);
StartPos := 1;
if APath[StartPos] = '/' then Inc(StartPos);
while Assigned(Result) do
begin
EndPos := StartPos;
while (EndPos <= PathLen) and (APath[EndPos] <> '/') do
Inc(EndPos);
if (EndPos > PathLen) and (pfHasValue in Flags) then
begin
SetString(Ident, PWideChar(@APath[StartPos]), PathLen-StartPos+1);
exit;
end;
if EndPos = StartPos then
break;
Child := Result.FirstChild;
while Assigned(Child) and not ((Child.NodeType = ELEMENT_NODE)
and (0 = CompareDOMStrings(DOMPChar(TDOMElement(Child).TagName), @APath[StartPos],
Length(TDOMElement(Child).TagName), EndPos-StartPos))) do
Child := Child.NextSibling;
if (Child = nil) and (pfWriteAccess in Flags) then
begin
Child := Doc.CreateElementBuf(@APath[StartPos], EndPos-StartPos);
Result.AppendChild(Child);
end;
Result := TDOMElement(Child);
StartPos := EndPos + 1;
if StartPos > PathLen then
exit;
end;
Result := nil;
end;
procedure TXMLConfig.DoSetFilename(const AFilename: String; ForceReload: Boolean);
begin
if (not ForceReload) and (FFilename = AFilename) then
exit;
FFilename := AFilename;
if csLoading in ComponentState then
exit;
Flush;
FreeAndNil(Doc);
if FileExists(AFilename) and not FStartEmpty then
ReadXMLFile(Doc, AFilename);
if not Assigned(Doc) then
Doc := TXMLDocument.Create;
if not Assigned(Doc.DocumentElement) then
Doc.AppendChild(Doc.CreateElement(FRootName))
else
if Doc.DocumentElement.NodeName <> FRootName then
raise EXMLConfigError.Create(SWrongRootName);
end;
procedure TXMLConfig.SetFilename(const AFilename: String);
begin
DoSetFilename(AFilename, False);
end;
procedure TXMLConfig.SetRootName(const AValue: DOMString);
var
Cfg, Root: TDOMElement;
begin
if AValue <> FRootName then
begin
FRootName := AValue;
Root := Doc.DocumentElement;
Cfg := Doc.CreateElement(AValue);
while Assigned(Root.FirstChild) do
Cfg.AppendChild(Root.FirstChild);
Doc.ReplaceChild(Cfg, Root);
FModified := True;
end;
end;
procedure TXMLConfig.SetStartEmpty(AValue: Boolean);
begin
if AValue <> StartEmpty then
begin
FStartEmpty := AValue;
if (not AValue) and not Modified then
DoSetFilename(Filename, True);
end;
end;
procedure TXMLConfig.CloseKey;
begin
if FPathCount > 0 then
begin
FPathStack[FPathCount-1] := '';
Dec(FPathCount);
FElement := nil;
FPathDirty := True;
end;
end;
procedure TXMLConfig.OpenKey(const aPath: WideString);
begin
if aPath <> '' then
begin
if FPathCount >= Length(FPathStack) then
SetLength(FPathStack, FPathCount + 5);
FPathStack[FPathCount] := aPath;
Inc(FPathCount);
FElement := nil;
FPathDirty := True;
end;
end;
procedure TXMLConfig.ResetKey;
var
I: Integer;
begin
for I := Length(FPathStack) downto 0 do
FPathStack[I] := '';
FElement := nil;
FPathDirty := False;
FPathCount := 0;
end;
end.