mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-08 17:29:49 +01:00
* new libxml2 samples
git-svn-id: trunk@11634 -
This commit is contained in:
parent
52666b1dc0
commit
510e22e898
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -3292,6 +3292,8 @@ packages/libxml/examples/reader1.pas svneol=native#text/plain
|
|||||||
packages/libxml/examples/reader2.pas svneol=native#text/plain
|
packages/libxml/examples/reader2.pas svneol=native#text/plain
|
||||||
packages/libxml/examples/test1.xml svneol=native#text/plain
|
packages/libxml/examples/test1.xml svneol=native#text/plain
|
||||||
packages/libxml/examples/test2.xml svneol=native#text/plain
|
packages/libxml/examples/test2.xml svneol=native#text/plain
|
||||||
|
packages/libxml/examples/tree1.pas svneol=native#text/plain
|
||||||
|
packages/libxml/examples/tree2.pas svneol=native#text/plain
|
||||||
packages/libxml/fpmake.pp svneol=native#text/plain
|
packages/libxml/fpmake.pp svneol=native#text/plain
|
||||||
packages/libxml/src/HTMLparser.inc svneol=native#text/plain
|
packages/libxml/src/HTMLparser.inc svneol=native#text/plain
|
||||||
packages/libxml/src/HTMLtree.inc svneol=native#text/plain
|
packages/libxml/src/HTMLtree.inc svneol=native#text/plain
|
||||||
|
|||||||
@ -259,178 +259,178 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
|
|||||||
endif
|
endif
|
||||||
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
|
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
|
||||||
ifeq ($(FULL_TARGET),i386-linux)
|
ifeq ($(FULL_TARGET),i386-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-win32)
|
ifeq ($(FULL_TARGET),i386-win32)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-os2)
|
ifeq ($(FULL_TARGET),i386-os2)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-beos)
|
ifeq ($(FULL_TARGET),i386-beos)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-haiku)
|
ifeq ($(FULL_TARGET),i386-haiku)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-solaris)
|
ifeq ($(FULL_TARGET),i386-solaris)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-qnx)
|
ifeq ($(FULL_TARGET),i386-qnx)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-netware)
|
ifeq ($(FULL_TARGET),i386-netware)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-darwin)
|
ifeq ($(FULL_TARGET),i386-darwin)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-emx)
|
ifeq ($(FULL_TARGET),i386-emx)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-watcom)
|
ifeq ($(FULL_TARGET),i386-watcom)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-wince)
|
ifeq ($(FULL_TARGET),i386-wince)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-embedded)
|
ifeq ($(FULL_TARGET),i386-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),i386-symbian)
|
ifeq ($(FULL_TARGET),i386-symbian)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-linux)
|
ifeq ($(FULL_TARGET),m68k-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-atari)
|
ifeq ($(FULL_TARGET),m68k-atari)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),m68k-embedded)
|
ifeq ($(FULL_TARGET),m68k-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-amiga)
|
ifeq ($(FULL_TARGET),powerpc-amiga)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc-embedded)
|
ifeq ($(FULL_TARGET),powerpc-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),sparc-linux)
|
ifeq ($(FULL_TARGET),sparc-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),sparc-embedded)
|
ifeq ($(FULL_TARGET),sparc-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),x86_64-darwin)
|
ifeq ($(FULL_TARGET),x86_64-darwin)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),x86_64-win64)
|
ifeq ($(FULL_TARGET),x86_64-win64)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),x86_64-embedded)
|
ifeq ($(FULL_TARGET),x86_64-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-linux)
|
ifeq ($(FULL_TARGET),arm-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-palmos)
|
ifeq ($(FULL_TARGET),arm-palmos)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-darwin)
|
ifeq ($(FULL_TARGET),arm-darwin)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-wince)
|
ifeq ($(FULL_TARGET),arm-wince)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-gba)
|
ifeq ($(FULL_TARGET),arm-gba)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-nds)
|
ifeq ($(FULL_TARGET),arm-nds)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-embedded)
|
ifeq ($(FULL_TARGET),arm-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),arm-symbian)
|
ifeq ($(FULL_TARGET),arm-symbian)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc64-linux)
|
ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc64-darwin)
|
ifeq ($(FULL_TARGET),powerpc64-darwin)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),powerpc64-embedded)
|
ifeq ($(FULL_TARGET),powerpc64-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),avr-embedded)
|
ifeq ($(FULL_TARGET),avr-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),armeb-linux)
|
ifeq ($(FULL_TARGET),armeb-linux)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
ifeq ($(FULL_TARGET),armeb-embedded)
|
ifeq ($(FULL_TARGET),armeb-embedded)
|
||||||
override TARGET_PROGRAMS+=reader1 reader2 io1 io2
|
override TARGET_PROGRAMS+=reader1 reader2 io1 io2 tree1 tree2
|
||||||
endif
|
endif
|
||||||
override INSTALL_FPCPACKAGE=y
|
override INSTALL_FPCPACKAGE=y
|
||||||
ifdef REQUIRE_UNITSDIR
|
ifdef REQUIRE_UNITSDIR
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
[target]
|
[target]
|
||||||
programs=reader1 reader2 io1 io2
|
programs=reader1 reader2 io1 io2 tree1 tree2
|
||||||
|
|
||||||
[require]
|
[require]
|
||||||
#packages=
|
#packages=
|
||||||
|
|||||||
@ -32,7 +32,7 @@ var
|
|||||||
begin
|
begin
|
||||||
name := xmlTextReaderConstName(reader);
|
name := xmlTextReaderConstName(reader);
|
||||||
if not assigned(name) then
|
if not assigned(name) then
|
||||||
name := pchar('--'); // BAD_CAST !!!!
|
name := BAD_CAST('--');
|
||||||
|
|
||||||
value := xmlTextReaderConstValue(reader);
|
value := xmlTextReaderConstValue(reader);
|
||||||
|
|
||||||
|
|||||||
76
packages/libxml/examples/tree1.pas
Normal file
76
packages/libxml/examples/tree1.pas
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
(**
|
||||||
|
* section: Tree
|
||||||
|
* synopsis: Navigates a tree to print element names
|
||||||
|
* purpose: Parse a file to a tree, use xmlDocGetRootElement() to
|
||||||
|
* get the root element, then walk the document and print
|
||||||
|
* all the element name in document order.
|
||||||
|
* usage: tree1 filename_or_URL
|
||||||
|
* test: tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp
|
||||||
|
* author: Dodji Seketeli
|
||||||
|
* copy: see Copyright for the status of this software.
|
||||||
|
*)
|
||||||
|
|
||||||
|
program tree1;
|
||||||
|
|
||||||
|
{$mode objfpc}
|
||||||
|
|
||||||
|
uses
|
||||||
|
ctypes,
|
||||||
|
libxml2,
|
||||||
|
exutils,
|
||||||
|
SysUtils;
|
||||||
|
|
||||||
|
procedure print_element_names(a_node: xmlNodePtr);
|
||||||
|
var
|
||||||
|
cur_node: xmlNodePtr;
|
||||||
|
begin
|
||||||
|
cur_node := a_node;
|
||||||
|
while assigned(cur_node) do
|
||||||
|
begin
|
||||||
|
if cur_node^._type = XML_ELEMENT_NODE then
|
||||||
|
printfn('node type: Element, name: %s', [cur_node^.name]);
|
||||||
|
|
||||||
|
print_element_names(cur_node^.children);
|
||||||
|
|
||||||
|
cur_node := cur_node^.next;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
doc: xmlDocPtr;
|
||||||
|
root_element: xmlNodePtr;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if paramCount <> 1 then
|
||||||
|
halt(1);
|
||||||
|
|
||||||
|
(*
|
||||||
|
* this initialize the library and check potential ABI mismatches
|
||||||
|
* between the version it was compiled for and the actual shared
|
||||||
|
* library used.
|
||||||
|
*)
|
||||||
|
LIBXML_TEST_VERSION;
|
||||||
|
|
||||||
|
(* parse the file and get the DOM *)
|
||||||
|
doc := xmlReadFile(pchar(paramStr(1)), nil, 0);
|
||||||
|
|
||||||
|
if not assigned(doc) then
|
||||||
|
begin
|
||||||
|
printfn('error: could not parse file %s', [paramStr(1)]);
|
||||||
|
halt(1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
(* Get the root element node *)
|
||||||
|
root_element := xmlDocGetRootElement(doc);
|
||||||
|
|
||||||
|
print_element_names(root_element);
|
||||||
|
|
||||||
|
(* free the document *)
|
||||||
|
xmlFreeDoc(doc);
|
||||||
|
|
||||||
|
(*
|
||||||
|
* Free the global variables that may
|
||||||
|
* have been allocated by the parser.
|
||||||
|
*)
|
||||||
|
xmlCleanupParser();
|
||||||
|
end.
|
||||||
109
packages/libxml/examples/tree2.pas
Normal file
109
packages/libxml/examples/tree2.pas
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
(*
|
||||||
|
* section: Tree
|
||||||
|
* synopsis: Creates a tree
|
||||||
|
* purpose: Shows how to create document, nodes and dump it to stdout or file.
|
||||||
|
* usage: tree2 <filename> -Default output: stdout
|
||||||
|
* test: tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp
|
||||||
|
* author: Lucas Brasilino <brasilino@recife.pe.gov.br>
|
||||||
|
* copy: see Copyright for the status of this software
|
||||||
|
*)
|
||||||
|
|
||||||
|
program tree2;
|
||||||
|
|
||||||
|
{$mode objfpc}
|
||||||
|
|
||||||
|
uses
|
||||||
|
ctypes,
|
||||||
|
libxml2,
|
||||||
|
exutils,
|
||||||
|
SysUtils;
|
||||||
|
|
||||||
|
var
|
||||||
|
doc: xmlDocPtr;
|
||||||
|
root_node, node, node1: xmlNodePtr;
|
||||||
|
dtd: xmlDtdPtr;
|
||||||
|
buff: array[0..255] of char;
|
||||||
|
i, j: cint;
|
||||||
|
|
||||||
|
begin
|
||||||
|
LIBXML_TEST_VERSION;
|
||||||
|
|
||||||
|
(*
|
||||||
|
* Creates a new document, a node and set it as a root node
|
||||||
|
*)
|
||||||
|
doc := xmlNewDoc(BAD_CAST('1.0'));
|
||||||
|
root_node := xmlNewNode(nil, BAD_CAST('root'));
|
||||||
|
xmlDocSetRootElement(doc, root_node);
|
||||||
|
|
||||||
|
(*
|
||||||
|
* Creates a DTD declaration. Isn't mandatory.
|
||||||
|
*)
|
||||||
|
dtd := xmlCreateIntSubset(doc, BAD_CAST('root'), nil, BAD_CAST('tree2.dtd'));
|
||||||
|
|
||||||
|
(*
|
||||||
|
* xmlNewChild() creates a new node, which is "attached" as child node
|
||||||
|
* of root_node node.
|
||||||
|
*)
|
||||||
|
xmlNewChild(root_node, nil, BAD_CAST('node1'), BAD_CAST('content of node 1'));
|
||||||
|
(*
|
||||||
|
* The same as above, but the new child node doesn't have a content
|
||||||
|
*)
|
||||||
|
xmlNewChild(root_node, nil, BAD_CAST('node2'), nil);
|
||||||
|
|
||||||
|
(*
|
||||||
|
* xmlNewProp() creates attributes, which is "attached" to an node.
|
||||||
|
* It returns xmlAttrPtr, which isn't used here.
|
||||||
|
*)
|
||||||
|
node := xmlNewChild(root_node, nil, BAD_CAST('node3'), BAD_CAST('this node has attributes'));
|
||||||
|
xmlNewProp(node, BAD_CAST('attribute'), BAD_CAST('yes'));
|
||||||
|
xmlNewProp(node, BAD_CAST('foo'), BAD_CAST('bar'));
|
||||||
|
|
||||||
|
(*
|
||||||
|
* Here goes another way to create nodes. xmlNewNode() and xmlNewText
|
||||||
|
* creates a node and a text node separately. They are "attached"
|
||||||
|
* by xmlAddChild()
|
||||||
|
*)
|
||||||
|
node := xmlNewNode(nil, BAD_CAST('node4'));
|
||||||
|
node1 := xmlNewText(BAD_CAST('other way to create content (which is also a node)'));
|
||||||
|
xmlAddChild(node, node1);
|
||||||
|
xmlAddChild(root_node, node);
|
||||||
|
|
||||||
|
(*
|
||||||
|
* A simple loop that "automates" nodes creation
|
||||||
|
*)
|
||||||
|
for i := 5 to 6 do
|
||||||
|
begin
|
||||||
|
buff := 'node'+inttostr(i);
|
||||||
|
node := xmlNewChild(root_node, nil, BAD_CAST(buff), nil);
|
||||||
|
|
||||||
|
for j := 1 to 3 do
|
||||||
|
begin
|
||||||
|
buff := 'node'+inttostr(i)+inttostr(j);
|
||||||
|
node1 := xmlNewChild(node, nil, BAD_CAST(buff), nil);
|
||||||
|
if j mod 2 = 0 then
|
||||||
|
xmlNewProp(node1, BAD_CAST('odd'), BAD_CAST('no'))
|
||||||
|
else
|
||||||
|
xmlNewProp(node1, BAD_CAST('odd'), BAD_CAST('yes'));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
(*
|
||||||
|
* Dumping document to stdio or file
|
||||||
|
*)
|
||||||
|
docdump(doc);
|
||||||
|
//xmlSaveFormatFileEnc(argc > 1 ? argv[1] : "-", doc, "UTF-8", 1);
|
||||||
|
|
||||||
|
(*free the document *)
|
||||||
|
xmlFreeDoc(doc);
|
||||||
|
|
||||||
|
(*
|
||||||
|
* Free the global variables that may
|
||||||
|
* have been allocated by the parser.
|
||||||
|
*)
|
||||||
|
xmlCleanupParser();
|
||||||
|
|
||||||
|
(*
|
||||||
|
* this is to debug memory for regression tests
|
||||||
|
*)
|
||||||
|
xmlMemoryDump();
|
||||||
|
end.
|
||||||
Loading…
Reference in New Issue
Block a user