libxml
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 57
libxml++ 2.18.2
Libxml++ is a C++ wrapper for the libxml XML parser library. more>>
Libxml++ is a C++ wrapper for the libxml XML parser library.
It has SAX and DOM-like APIs, but does not attempt to conform exactly to the DOM specifications because they are not aimed at C++.
Its API is much simpler than the underlying libxml C API.
The GNOME 2.12 Desktop is the latest release of the ever popular, multi-platform free desktop environment - on time, to the day! It includes a number of interesting new features and hundreds of bug fixes.
GNOME is...
Free
GNOME is Free Software and part of the GNU project, dedicated to giving users and developers the ultimate level of control over their desktops, their software, and their data. Find out more about the GNU project and Free Software at gnu.org.
Usable
GNOME understands that usability is about creating software that is easy for everyone to use, not about piling on features. GNOMEs community of professional and volunteer usability experts have created Free Softwares first and only Human Interface Guidelines, and all core GNOME software is adopting these principles. Find out more about GNOME and usability at the GNOME Usability Project.
Accessible
Free Software is about enabling software freedom for everyone, including users and developers with disabilities. GNOMEs Accessibility framework is the result of several years of effort, and makes GNOME the most accessible desktop for any Unix platform. Find out more at the GNOME Accessibility Project.
International
GNOME is used, developed and documented in dozens of languages, and we strive to ensure that every piece of GNOME software can be translated into all languages. Find out more at the GNOME Translation Project.
Developer-friendly
Developers are not tied to a single language with GNOME. You can use C, C++, Python, Perl, Java, even C#, to produce high-quality applications that integrate smoothly into the rest of your Unix or Linux desktop.
Organized
GNOME strives to be an organized community, with a foundation of several hundred members, usability, accessibility, and QA teams, and an elected board. GNOME releases are defined by the GNOME Release Team and are scheduled to occur every six months.
Supported
Beyond the worldwide GNOME Community, GNOME is supported by the leading companies in Linux and Unix, including HP, MandrakeSoft, Novell, Red Hat, and Sun. Find out more at foundation.gnome.org.
A community
Perhaps more than anything else, GNOME is a worldwide community of volunteers who hack, translate, design, QA, and generally have fun together. Find out more at GNOME Developers site.
Enhancements:
- TextReader: get_name(): Fixed a memory leak (Christophe de Vienne) Bug #447535.
<<lessIt has SAX and DOM-like APIs, but does not attempt to conform exactly to the DOM specifications because they are not aimed at C++.
Its API is much simpler than the underlying libxml C API.
The GNOME 2.12 Desktop is the latest release of the ever popular, multi-platform free desktop environment - on time, to the day! It includes a number of interesting new features and hundreds of bug fixes.
GNOME is...
Free
GNOME is Free Software and part of the GNU project, dedicated to giving users and developers the ultimate level of control over their desktops, their software, and their data. Find out more about the GNU project and Free Software at gnu.org.
Usable
GNOME understands that usability is about creating software that is easy for everyone to use, not about piling on features. GNOMEs community of professional and volunteer usability experts have created Free Softwares first and only Human Interface Guidelines, and all core GNOME software is adopting these principles. Find out more about GNOME and usability at the GNOME Usability Project.
Accessible
Free Software is about enabling software freedom for everyone, including users and developers with disabilities. GNOMEs Accessibility framework is the result of several years of effort, and makes GNOME the most accessible desktop for any Unix platform. Find out more at the GNOME Accessibility Project.
International
GNOME is used, developed and documented in dozens of languages, and we strive to ensure that every piece of GNOME software can be translated into all languages. Find out more at the GNOME Translation Project.
Developer-friendly
Developers are not tied to a single language with GNOME. You can use C, C++, Python, Perl, Java, even C#, to produce high-quality applications that integrate smoothly into the rest of your Unix or Linux desktop.
Organized
GNOME strives to be an organized community, with a foundation of several hundred members, usability, accessibility, and QA teams, and an elected board. GNOME releases are defined by the GNOME Release Team and are scheduled to occur every six months.
Supported
Beyond the worldwide GNOME Community, GNOME is supported by the leading companies in Linux and Unix, including HP, MandrakeSoft, Novell, Red Hat, and Sun. Find out more at foundation.gnome.org.
A community
Perhaps more than anything else, GNOME is a worldwide community of volunteers who hack, translate, design, QA, and generally have fun together. Find out more at GNOME Developers site.
Enhancements:
- TextReader: get_name(): Fixed a memory leak (Christophe de Vienne) Bug #447535.
Download (0.91MB)
Added: 2007-07-30 License: GPL (GNU General Public License) Price:
817 downloads
XML::LibXML::DOM 1.58
XML::LibXML::DOM is a XML::LibXML DOM Implementation. more>>
XML::LibXML::DOM is a XML::LibXML DOM Implementation.
XML::LibXML provides an lightwight interface to modify a node of the document tree generated by the XML::LibXML parser. This interface follows as far as possible the DOM Level 3 specification. Additionally to the specified functions the XML::LibXML supports some functions that are more handy to use in the perl environment.
One also has to remember, that XML::LibXML is an interface to libxml2 nodes which actually reside on the C-Level of XML::LibXML. This means each node is a reference to a structure different than a perl hash or array. The only way to access these structures values is through the DOM interface provided by XML::LibXML. This also means, that one cant simply inherit a XML::LibXML node and add new member variables as they were hash keys.
The DOM interface of XML::LibXML does not intend to implement a full DOM interface as it is done by XML::GDOME and used for full featured application. Moreover, it offers an simple way to build or modify documents that are created by XML::LibXMLs parser.
Another target of the XML::LibXML interface is to make the interfaces of libxml2 available to the perl community. This includes also some workarounds to some features where libxml2 assumes more control over the C-Level that most perl users dont have.
One of the most important parts of the XML::LibXML DOM interface is, that the interfaces try do follow the DOM Level 3 specification rather strictly. This means the interface functions are named as the DOM specification says and not what widespread Java interfaces claim to be standard. Although there are several functions that have only a singular interface that conforms to the DOM spec XML::LibXML provides an additional Java style alias interface.
Also there are some function interfaces left over from early stages of XML::LibXML for compatibility reasons. These interfaces are for compatibility reasons only. They might disappear in one of the future versions of XML::LibXML, so a user is requested to switch over to the official functions.
More recent versions of perl (e.g. 5.6.1 or higher) support special flags to disinguish between UTF8 and so called binary data. XML::LibXML provides for these versions functionality to make efficient use of these flags: If a document has set an encoding other than UTF8 all strings that are not already in UTF8 are implicitly encoded from the document encoding to UTF8. On output these strings are commonly returned as UTF8 unless a user does request explicitly the original (aka. document) encoding.
Older version of perl (such as 5.00503 or less) do not support these flags. If XML::LibXML is build for these versions, all strings have to get encoded to UTF8 manualy before they are passed to any DOM functions.
NOTE: XML::LibXMLs magic encoding may not work on all plattforms. Some platforms are known to have a broken iconv(), which is partly used by libxml2. To test if your platform works correctly with your language encoding, build a simple document in the particular encoding and try to parse it with XML::LibXML. If your document gets parsed with out causing any segmentation faults, bus errors or whatever your OS throws. An example for such a test can be found in test 19encoding.t of the distribution.
Namespaces and XML::LibXMLs DOM implementation
XML::LibXMLs DOM implementation follows the DOM implementation of libxml2. This is important to know if namespaces are used. Namespaces cannot be declared on an document node. This is basicly because XPath doesnt know about document nodes. Therefore namespaces have to be declared on element nodes.
This can happen explicitly by using XML::LibXML:Elements setNamespace() function or more or less implicitly by using XML::LibXML::Documents createElementNS() or createAttributeNS() function. If the a namespace is not declared on the documentElement, the namespace will be localy declared for the newly created node. In case of Attributes this may look a bit confusing, since these nodes cannot have namespace declarations itself. In this case the namespace in internally applied to the attribute and later declared on the node the attribute is appended to.
<<lessXML::LibXML provides an lightwight interface to modify a node of the document tree generated by the XML::LibXML parser. This interface follows as far as possible the DOM Level 3 specification. Additionally to the specified functions the XML::LibXML supports some functions that are more handy to use in the perl environment.
One also has to remember, that XML::LibXML is an interface to libxml2 nodes which actually reside on the C-Level of XML::LibXML. This means each node is a reference to a structure different than a perl hash or array. The only way to access these structures values is through the DOM interface provided by XML::LibXML. This also means, that one cant simply inherit a XML::LibXML node and add new member variables as they were hash keys.
The DOM interface of XML::LibXML does not intend to implement a full DOM interface as it is done by XML::GDOME and used for full featured application. Moreover, it offers an simple way to build or modify documents that are created by XML::LibXMLs parser.
Another target of the XML::LibXML interface is to make the interfaces of libxml2 available to the perl community. This includes also some workarounds to some features where libxml2 assumes more control over the C-Level that most perl users dont have.
One of the most important parts of the XML::LibXML DOM interface is, that the interfaces try do follow the DOM Level 3 specification rather strictly. This means the interface functions are named as the DOM specification says and not what widespread Java interfaces claim to be standard. Although there are several functions that have only a singular interface that conforms to the DOM spec XML::LibXML provides an additional Java style alias interface.
Also there are some function interfaces left over from early stages of XML::LibXML for compatibility reasons. These interfaces are for compatibility reasons only. They might disappear in one of the future versions of XML::LibXML, so a user is requested to switch over to the official functions.
More recent versions of perl (e.g. 5.6.1 or higher) support special flags to disinguish between UTF8 and so called binary data. XML::LibXML provides for these versions functionality to make efficient use of these flags: If a document has set an encoding other than UTF8 all strings that are not already in UTF8 are implicitly encoded from the document encoding to UTF8. On output these strings are commonly returned as UTF8 unless a user does request explicitly the original (aka. document) encoding.
Older version of perl (such as 5.00503 or less) do not support these flags. If XML::LibXML is build for these versions, all strings have to get encoded to UTF8 manualy before they are passed to any DOM functions.
NOTE: XML::LibXMLs magic encoding may not work on all plattforms. Some platforms are known to have a broken iconv(), which is partly used by libxml2. To test if your platform works correctly with your language encoding, build a simple document in the particular encoding and try to parse it with XML::LibXML. If your document gets parsed with out causing any segmentation faults, bus errors or whatever your OS throws. An example for such a test can be found in test 19encoding.t of the distribution.
Namespaces and XML::LibXMLs DOM implementation
XML::LibXMLs DOM implementation follows the DOM implementation of libxml2. This is important to know if namespaces are used. Namespaces cannot be declared on an document node. This is basicly because XPath doesnt know about document nodes. Therefore namespaces have to be declared on element nodes.
This can happen explicitly by using XML::LibXML:Elements setNamespace() function or more or less implicitly by using XML::LibXML::Documents createElementNS() or createAttributeNS() function. If the a namespace is not declared on the documentElement, the namespace will be localy declared for the newly created node. In case of Attributes this may look a bit confusing, since these nodes cannot have namespace declarations itself. In this case the namespace in internally applied to the attribute and later declared on the node the attribute is appended to.
Download (0.16MB)
Added: 2006-07-17 License: GPL (GNU General Public License) Price:
1198 downloads
XML::LibXML::Parser 1.63
XML::LibXML::Parser is a Perl module to parse XML Data with XML::LibXML. more>>
XML::LibXML::Parser is a Perl module to parse XML Data with XML::LibXML.
SYNOPSIS
$parser = XML::LibXML->new();
$doc = $parser->parse_file( $xmlfilename );
$doc = $parser->parse_fh( $io_fh );
$doc = $parser->parse_string( $xmlstring);
$doc = $parser->parse_html_file( $htmlfile, %opts );
$doc = $parser->parse_html_fh( $io_fh, %opts );
$doc = $parser->parse_html_string( $htmlstring, %opts );
$fragment = $parser->parse_balanced_chunk( $wbxmlstring );
$fragment = $parser->parse_xml_chunk( $wbxmlstring );
$parser->process_xincludes( $doc );
$parser->processXIncludes( $doc );
$parser->parse_chunk($string, $terminate);
$parser->start_push();
$parser->push(@data);
$doc = $parser->finish_push( $recover );
$parser->validation(1);
$parser->recover(1);
$parser->recover_silently(1);
$parser->expand_entities(0);
$parser->keep_blanks(0);
$parser->pedantic_parser(1);
$parser->line_numbers(1);
$parser->load_ext_dtd(1);
$parser->complete_attributes(1);
$parser->expand_xinclude(1);
$parser->load_catalog( $catalog_file );
$parser->base_uri( $your_base_uri );
$parser->gdome_dom(1);
$parser->clean_namespaces( 1 );
$parser->no_network(1);
SYNOPSIS
use XML::LibXML;
my $parser = XML::LibXML->new();
my $doc = $parser->parse_string(parse_fh( $xmlstream );
my $fragment = $parser->parse_xml_chunk( $xml_wb_chunk );
<<lessSYNOPSIS
$parser = XML::LibXML->new();
$doc = $parser->parse_file( $xmlfilename );
$doc = $parser->parse_fh( $io_fh );
$doc = $parser->parse_string( $xmlstring);
$doc = $parser->parse_html_file( $htmlfile, %opts );
$doc = $parser->parse_html_fh( $io_fh, %opts );
$doc = $parser->parse_html_string( $htmlstring, %opts );
$fragment = $parser->parse_balanced_chunk( $wbxmlstring );
$fragment = $parser->parse_xml_chunk( $wbxmlstring );
$parser->process_xincludes( $doc );
$parser->processXIncludes( $doc );
$parser->parse_chunk($string, $terminate);
$parser->start_push();
$parser->push(@data);
$doc = $parser->finish_push( $recover );
$parser->validation(1);
$parser->recover(1);
$parser->recover_silently(1);
$parser->expand_entities(0);
$parser->keep_blanks(0);
$parser->pedantic_parser(1);
$parser->line_numbers(1);
$parser->load_ext_dtd(1);
$parser->complete_attributes(1);
$parser->expand_xinclude(1);
$parser->load_catalog( $catalog_file );
$parser->base_uri( $your_base_uri );
$parser->gdome_dom(1);
$parser->clean_namespaces( 1 );
$parser->no_network(1);
SYNOPSIS
use XML::LibXML;
my $parser = XML::LibXML->new();
my $doc = $parser->parse_string(parse_fh( $xmlstream );
my $fragment = $parser->parse_xml_chunk( $xml_wb_chunk );
Download (0.25MB)
Added: 2007-06-15 License: Perl Artistic License Price:
863 downloads
XML::LibXML::Reader 1.63
XML::LibXML::Reader is a Perl interface to libxml2 pull parser. more>>
XML::LibXML::Reader is a Perl interface to libxml2 pull parser.
SYNOPSIS
use XML::LibXML::Reader;
$reader = new XML::LibXML::Reader("file.xml")
or die "cannot read file.xmln";
while ($reader->read) {
processNode($reader);
}
sub processNode {
$reader = shift;
printf "%d %d %s %dn", ($reader->depth,
$reader->nodeType,
$reader->name,
$reader->isEmptyElement);
}
or
$reader = new XML::LibXML::Reader("file.xml")
or die "cannot read file.xmln";
$reader->preservePattern(//table/tr);
$reader->finish;
print $reader->document->toString(1);
This is a perl interface to libxml2s pull-parser implementation xmlTextReader http://xmlsoft.org/html/libxml-xmlreader.html. This feature requires at least libxml2-2.6.21. Pull-parser (StAX in Java, XmlReader in C#) use an iterator approach to parse a xml-file. They are easier to program than event-based parser (SAX) and much more lightweight than tree-based parser (DOM), which load the complete tree into memory.
The Reader acts as a cursor going forward on the document stream and stopping at each node in the way. At every point DOM-like methods of the Reader object allow to examine the current node (name, namespace, attributes, etc.)
The users code keeps control of the progress and simply calls the read() function repeatedly to progress to the next node in the document order. Other functions provide means for skipping complete sub-trees, or nodes until a specific element, etc.
At every time, only a very limited portion of the document is kept in the memory, which makes the API more memory-efficient than using DOM. However, it is also possible to mix Reader with DOM. At every point the user may copy the current node (optionally expanded into a complete sub-tree) from the processed document to another DOM tree, or to instruct the Reader to collect sub-document in form of a DOM tree consisting of selected nodes.
Reader API also supports namespaces, xml:base, entity handling, and DTD validation. Schema and RelaxNG validation support will probably be added in some later revision of the Perl interface.
The naming of methods compared to libxml2 and C# XmlTextReader has been changed slightly to match the conventions of XML::LibXML. Some functions have been changed or added with respect to the C interface.
<<lessSYNOPSIS
use XML::LibXML::Reader;
$reader = new XML::LibXML::Reader("file.xml")
or die "cannot read file.xmln";
while ($reader->read) {
processNode($reader);
}
sub processNode {
$reader = shift;
printf "%d %d %s %dn", ($reader->depth,
$reader->nodeType,
$reader->name,
$reader->isEmptyElement);
}
or
$reader = new XML::LibXML::Reader("file.xml")
or die "cannot read file.xmln";
$reader->preservePattern(//table/tr);
$reader->finish;
print $reader->document->toString(1);
This is a perl interface to libxml2s pull-parser implementation xmlTextReader http://xmlsoft.org/html/libxml-xmlreader.html. This feature requires at least libxml2-2.6.21. Pull-parser (StAX in Java, XmlReader in C#) use an iterator approach to parse a xml-file. They are easier to program than event-based parser (SAX) and much more lightweight than tree-based parser (DOM), which load the complete tree into memory.
The Reader acts as a cursor going forward on the document stream and stopping at each node in the way. At every point DOM-like methods of the Reader object allow to examine the current node (name, namespace, attributes, etc.)
The users code keeps control of the progress and simply calls the read() function repeatedly to progress to the next node in the document order. Other functions provide means for skipping complete sub-trees, or nodes until a specific element, etc.
At every time, only a very limited portion of the document is kept in the memory, which makes the API more memory-efficient than using DOM. However, it is also possible to mix Reader with DOM. At every point the user may copy the current node (optionally expanded into a complete sub-tree) from the processed document to another DOM tree, or to instruct the Reader to collect sub-document in form of a DOM tree consisting of selected nodes.
Reader API also supports namespaces, xml:base, entity handling, and DTD validation. Schema and RelaxNG validation support will probably be added in some later revision of the Perl interface.
The naming of methods compared to libxml2 and C# XmlTextReader has been changed slightly to match the conventions of XML::LibXML. Some functions have been changed or added with respect to the C interface.
Download (0.25MB)
Added: 2007-06-15 License: Perl Artistic License Price:
864 downloads
XML::LibXML::Enhanced 0.01
XML::LibXML::Enhanced is a Perl module that adds convenience methods to XML::LibXML and LibXSLT. more>>
XML::LibXML::Enhanced is a Perl module that adds convenience methods to XML::LibXML and LibXSLT.
SYNOPSIS
use XML::LibXML::Enhanced;
my $xml = XML::LibXML::Singleton->instance;
my $xsl = XML::LibXSLT::Singleton->instance;
my $doc = $xml->parse_xml_string(" ");
my $root = $doc->getDocumentElement;
$root->appendHash({ name => Michael, email => mjs@beebo.org });
<<lessSYNOPSIS
use XML::LibXML::Enhanced;
my $xml = XML::LibXML::Singleton->instance;
my $xsl = XML::LibXSLT::Singleton->instance;
my $doc = $xml->parse_xml_string(" ");
my $root = $doc->getDocumentElement;
$root->appendHash({ name => Michael, email => mjs@beebo.org });
Download (0.007MB)
Added: 2006-09-19 License: Perl Artistic License Price:
1132 downloads
XML::LibXML::Node 1.61003
XML::LibXML::Node is an abstract base class of XML::LibXML nodes. more>>
XML::LibXML::Node is an abstract base class of XML::LibXML nodes.
SYNOPSIS
$name = $node->nodeName;
$node->setNodeName( $newName );
$bool = $node->isSameNode( $other_node );
$bool = $node->isEqual( $other_node );
$content = $node->nodeValue;
$content = $node->textContent;
$type = $node->nodeType;
$node->unbindNode();
$childnode = $node->removeChild( $childnode );
$oldnode = $node->replaceChild( $newNode, $oldNode );
$node->replaceNode($newNode);
$childnode = $node->appendChild( $childnode );
$childnode = $node->addChild( $chilnode );
$node = $parent->addNewChild( $nsURI, $name );
$node->addSibling($newNode);
$newnode =$node->cloneNode( $deep );
$parentnode = $node->parentNode;
$nextnode = $node->nextSibling();
$prevnode = $node->previousSibling();
$boolean = $node->hasChildNodes();
$childnode = $node->firstChild;
$childnode = $node->lastChild;
$documentnode = $node->ownerDocument;
$node = $node->getOwner;
$node->setOwnerDocument( $doc );
$node->insertBefore( $newNode, $refNode );
$node->insertAfter( $newNode, $refNode );
@nodes = $node->findnodes( $xpath_expression );
$result = $node->find( $xpath );
print $node->findvalue( $xpath );
@childnodes = $node->childNodes;
$xmlstring = $node->toString($format,$docencoding);
$c14nstring = $node->toString($with_comments, $xpath_expression);
$str = $doc->serialze($format);
$c14nstr = $doc->serialize_c14n($comment_flag,$xpath);
$localname = $node->localname;
$nameprefix = $node->prefix;
$uri = $node->namespaceURI();
$boolean = $node->hasAttributes();
@attributelist = $node->attributes();
$URI = $node->lookupNamespaceURI( $prefix );
$prefix = $node->lookupNamespacePrefix( $URI );
$iter = $node->iterator;
$node->normalize;
@nslist = $node->getNamespaces;
$node->removeChildNodes();
$node->nodePath();
$lineno = $node->line_number();
XML::LibXML::Node defines functions that are common to all Node Types. A LibXML::Node should never be created standalone, but as an instance of a high level class such as LibXML::Element or LibXML::Text. The class itself should provide only common functionality. In XML::LibXML each node is part either of a document or a document-fragment. Because of this there is no node without a parent. This may causes confusion with "unbound" nodes.
<<lessSYNOPSIS
$name = $node->nodeName;
$node->setNodeName( $newName );
$bool = $node->isSameNode( $other_node );
$bool = $node->isEqual( $other_node );
$content = $node->nodeValue;
$content = $node->textContent;
$type = $node->nodeType;
$node->unbindNode();
$childnode = $node->removeChild( $childnode );
$oldnode = $node->replaceChild( $newNode, $oldNode );
$node->replaceNode($newNode);
$childnode = $node->appendChild( $childnode );
$childnode = $node->addChild( $chilnode );
$node = $parent->addNewChild( $nsURI, $name );
$node->addSibling($newNode);
$newnode =$node->cloneNode( $deep );
$parentnode = $node->parentNode;
$nextnode = $node->nextSibling();
$prevnode = $node->previousSibling();
$boolean = $node->hasChildNodes();
$childnode = $node->firstChild;
$childnode = $node->lastChild;
$documentnode = $node->ownerDocument;
$node = $node->getOwner;
$node->setOwnerDocument( $doc );
$node->insertBefore( $newNode, $refNode );
$node->insertAfter( $newNode, $refNode );
@nodes = $node->findnodes( $xpath_expression );
$result = $node->find( $xpath );
print $node->findvalue( $xpath );
@childnodes = $node->childNodes;
$xmlstring = $node->toString($format,$docencoding);
$c14nstring = $node->toString($with_comments, $xpath_expression);
$str = $doc->serialze($format);
$c14nstr = $doc->serialize_c14n($comment_flag,$xpath);
$localname = $node->localname;
$nameprefix = $node->prefix;
$uri = $node->namespaceURI();
$boolean = $node->hasAttributes();
@attributelist = $node->attributes();
$URI = $node->lookupNamespaceURI( $prefix );
$prefix = $node->lookupNamespacePrefix( $URI );
$iter = $node->iterator;
$node->normalize;
@nslist = $node->getNamespaces;
$node->removeChildNodes();
$node->nodePath();
$lineno = $node->line_number();
XML::LibXML::Node defines functions that are common to all Node Types. A LibXML::Node should never be created standalone, but as an instance of a high level class such as LibXML::Element or LibXML::Text. The class itself should provide only common functionality. In XML::LibXML each node is part either of a document or a document-fragment. Because of this there is no node without a parent. This may causes confusion with "unbound" nodes.
Download (0.25MB)
Added: 2006-10-17 License: Perl Artistic License Price:
1102 downloads
XML::SimpleObject::LibXML 0.60
XML::SimpleObject::LibXML is a Perl extension allowing a simple(r) object representation of an XML::LibXML DOM object. more>>
XML::SimpleObject::LibXML is a Perl extension allowing a simple(r) object representation of an XML::LibXML DOM object.
SYNOPSIS
use XML::SimpleObject::LibXML;
# Construct with the key/value pairs as argument; this will create its
# own XML::LibXML object.
my $xmlobj = new XML::SimpleObject::LibXML(XML => $XML);
my $xmlobj = new XML::SimpleObject::LibXML(file => "./listing.xml");
my $xmlobj = new XML::SimpleObject::LibXML(); # empty DOM
# ... or construct with the parsed tree as the only argument, having to
# create the XML::LibXML object separately.
my $parser = new XML::LibXML;
my $dom = $parser->parse_file($file);
my $xmlobj = new XML::SimpleObject::LibXML ($dom);
my $filesobj = $xmlobj->child("files")->child("file");
# read values
$filesobj->name;
$filesobj->value;
$filesobj->attribute("type");
%attributes = $filesobj->attributes;
@children = $filesobj->children;
@some_children = $filesobj->children("some");
@children_names = $filesobj->children_names;
# set values
$filesobj->name("Files"); # set name
$filesobj->value("test"); # set text value
$filesobj->attribute("type", "bin"); # set existing attributes value
# add/delete nodes
$filesobj->add_child
("owner" => "me"); # add new element
$filesobj->add_attribute
("size" => "4"); # add new attribute
$filesobj->delete; # unbinds node from parent
# document processing
$xmlobj->replace_names_values(xpath => "/files/file[0]/title",
value => "places.txt", name => "newtitle");
$xmlobj->delete_nodes(xpath => "/files/file/size");
# output
$xmlobj->output_xml;
$xmlobj->output_xml_file("./newfile.xml");
This is a short and simple class allowing simple object access to a parsed XML::LibXML tree, with methods for fetching children and attributes in as clean a manner as possible. My apologies for further polluting the XML:: space; this is a small and quick module, with easy and compact usage. Some will rightfully question placing another interface over the DOM methods provided by XML::LibXML, but my experience is that people appreciate the total simplicity provided by this module, despite its limitations. These limitations include a minor loss of speed compared to the DOM, loss of control over node types, and protection (aka lack of knowledge) about the DOM. I encourage those who want more control and understanding over the DOM to study XML::LibXML; this modules source can be instructive, too.
<<lessSYNOPSIS
use XML::SimpleObject::LibXML;
# Construct with the key/value pairs as argument; this will create its
# own XML::LibXML object.
my $xmlobj = new XML::SimpleObject::LibXML(XML => $XML);
my $xmlobj = new XML::SimpleObject::LibXML(file => "./listing.xml");
my $xmlobj = new XML::SimpleObject::LibXML(); # empty DOM
# ... or construct with the parsed tree as the only argument, having to
# create the XML::LibXML object separately.
my $parser = new XML::LibXML;
my $dom = $parser->parse_file($file);
my $xmlobj = new XML::SimpleObject::LibXML ($dom);
my $filesobj = $xmlobj->child("files")->child("file");
# read values
$filesobj->name;
$filesobj->value;
$filesobj->attribute("type");
%attributes = $filesobj->attributes;
@children = $filesobj->children;
@some_children = $filesobj->children("some");
@children_names = $filesobj->children_names;
# set values
$filesobj->name("Files"); # set name
$filesobj->value("test"); # set text value
$filesobj->attribute("type", "bin"); # set existing attributes value
# add/delete nodes
$filesobj->add_child
("owner" => "me"); # add new element
$filesobj->add_attribute
("size" => "4"); # add new attribute
$filesobj->delete; # unbinds node from parent
# document processing
$xmlobj->replace_names_values(xpath => "/files/file[0]/title",
value => "places.txt", name => "newtitle");
$xmlobj->delete_nodes(xpath => "/files/file/size");
# output
$xmlobj->output_xml;
$xmlobj->output_xml_file("./newfile.xml");
This is a short and simple class allowing simple object access to a parsed XML::LibXML tree, with methods for fetching children and attributes in as clean a manner as possible. My apologies for further polluting the XML:: space; this is a small and quick module, with easy and compact usage. Some will rightfully question placing another interface over the DOM methods provided by XML::LibXML, but my experience is that people appreciate the total simplicity provided by this module, despite its limitations. These limitations include a minor loss of speed compared to the DOM, loss of control over node types, and protection (aka lack of knowledge) about the DOM. I encourage those who want more control and understanding over the DOM to study XML::LibXML; this modules source can be instructive, too.
Download (0.008MB)
Added: 2006-09-13 License: Perl Artistic License Price:
1137 downloads
XML::LibXML::XPathContext 1.63
XML::LibXML::XPathContext is an XPath evaluation. more>>
XML::LibXML::XPathContext is an XPath evaluation.
SYNOPSIS
my $xpc = XML::LibXML::XPathContext->new();
my $xpc = XML::LibXML::XPathContext->new($node);
$xpc->registerNs($prefix, $namespace_uri)
$xpc->unregisterNs($prefix)
$uri = $xpc->lookupNs($prefix)
$xpc->registerVarLookupFunc($callback, $data)
$data = $xpc->getVarLookupData();
$callback = $xpc->getVarLookupFunc();
$xpc->unregisterVarLookupFunc($name);
$xpc->registerFunctionNS($name, $uri, $callback)
$xpc->unregisterFunctionNS($name, $uri)
$xpc->registerFunction($name, $callback)
$xpc->unregisterFunction($name)
@nodes = $xpc->findnodes($xpath)
@nodes = $xpc->findnodes($xpath, $context_node )
$nodelist = $xpc->findnodes($xpath, $context_node )
$object = $xpc->find($xpath )
$object = $xpc->find($xpath, $context_node )
$value = $xpc->findvalue($xpath )
$value = $xpc->findvalue($xpath, $context_node )
$xpc->setContextNode($node)
my $node = $xpc->getContextNode;
$xpc->setContextPosition($position)
my $position = $xpc->getContextPosition;
$xpc->setContextSize($size)
my $size = $xpc->getContextSize;
$xpc->setContextNode($node)
The XML::LibXML::XPathContext class provides an almost complete interface to libxml2s XPath implementation. With XML::LibXML::XPathContext is is possible to evaluate XPath expressions in the context of arbitrary node, context size, and context position, with a user-defined namespace-prefix mapping, custom XPath functions written in Perl, and even a custom XPath variable resolver.
<<lessSYNOPSIS
my $xpc = XML::LibXML::XPathContext->new();
my $xpc = XML::LibXML::XPathContext->new($node);
$xpc->registerNs($prefix, $namespace_uri)
$xpc->unregisterNs($prefix)
$uri = $xpc->lookupNs($prefix)
$xpc->registerVarLookupFunc($callback, $data)
$data = $xpc->getVarLookupData();
$callback = $xpc->getVarLookupFunc();
$xpc->unregisterVarLookupFunc($name);
$xpc->registerFunctionNS($name, $uri, $callback)
$xpc->unregisterFunctionNS($name, $uri)
$xpc->registerFunction($name, $callback)
$xpc->unregisterFunction($name)
@nodes = $xpc->findnodes($xpath)
@nodes = $xpc->findnodes($xpath, $context_node )
$nodelist = $xpc->findnodes($xpath, $context_node )
$object = $xpc->find($xpath )
$object = $xpc->find($xpath, $context_node )
$value = $xpc->findvalue($xpath )
$value = $xpc->findvalue($xpath, $context_node )
$xpc->setContextNode($node)
my $node = $xpc->getContextNode;
$xpc->setContextPosition($position)
my $position = $xpc->getContextPosition;
$xpc->setContextSize($size)
my $size = $xpc->getContextSize;
$xpc->setContextNode($node)
The XML::LibXML::XPathContext class provides an almost complete interface to libxml2s XPath implementation. With XML::LibXML::XPathContext is is possible to evaluate XPath expressions in the context of arbitrary node, context size, and context position, with a user-defined namespace-prefix mapping, custom XPath functions written in Perl, and even a custom XPath variable resolver.
Download (0.25MB)
Added: 2007-07-31 License: Perl Artistic License Price:
815 downloads
XML::LibXML::SAX::Builder 0.14
Bigtop::Docs::Tutorial is a simple case study of building a web app with bigtop. more>>
Bigtop::Docs::Tutorial is a simple case study of building a web app with bigtop.
Note on What to Read
This document explains how to build an app of moderate complexity by typing in a bigtop file. Since it was written, tentmaker has come along. It is a browser delivered editor for bigtop files, see Bigtop::Docs::TentTut for details.
If you need a simpler example than the one shown here, consider the one table address book example in Gantry::Docs::Tutorial.
Driving Idea
Many (not all) applications are mostly data managers. That is, they are really intermediaries between users and various tables in a database. A bigtop file is meant to be a single place to describe all (or practically all) facits of the data in an application. This includes at least:
The name and special features of each controller.
- The name of each table in the database.
- A description of each column (field) in each table in the database. This includes at least:
its name and SQL type
- the label the user sees for it when it appears on the screen
- what type of html form element the user uses to enter or update it
- how the data is validated and filtered on its way into and out of the database (filtering not yet supported)
- which table the field refers to if it is a foreign key
- etc.
All of these things, and more, are described in a Bigtop file. That file can be given to bigtop to build the application. Once it is built, it can be safely rebuilt so that only the generated bits are changed (this is accomplished by maintaining a clean separation between generated and hand edited files, and by config options in the bigtop file).
Notice that nothing in the above has committed you or me to any particular web application framework, data modeling scheme, templating system, or web server. Bigtop is neutral (think big tent), at least for Perl apps delivered via the web.
<<lessNote on What to Read
This document explains how to build an app of moderate complexity by typing in a bigtop file. Since it was written, tentmaker has come along. It is a browser delivered editor for bigtop files, see Bigtop::Docs::TentTut for details.
If you need a simpler example than the one shown here, consider the one table address book example in Gantry::Docs::Tutorial.
Driving Idea
Many (not all) applications are mostly data managers. That is, they are really intermediaries between users and various tables in a database. A bigtop file is meant to be a single place to describe all (or practically all) facits of the data in an application. This includes at least:
The name and special features of each controller.
- The name of each table in the database.
- A description of each column (field) in each table in the database. This includes at least:
its name and SQL type
- the label the user sees for it when it appears on the screen
- what type of html form element the user uses to enter or update it
- how the data is validated and filtered on its way into and out of the database (filtering not yet supported)
- which table the field refers to if it is a foreign key
- etc.
All of these things, and more, are described in a Bigtop file. That file can be given to bigtop to build the application. Once it is built, it can be safely rebuilt so that only the generated bits are changed (this is accomplished by maintaining a clean separation between generated and hand edited files, and by config options in the bigtop file).
Notice that nothing in the above has committed you or me to any particular web application framework, data modeling scheme, templating system, or web server. Bigtop is neutral (think big tent), at least for Perl apps delivered via the web.
Download (0.30MB)
Added: 2006-08-31 License: Perl Artistic License Price:
663 downloads
DBIx::Class::LibXMLdoc 0.03
DBIx::Class::LibXMLdoc is a Perl module to create an adjunct Doc accessor of a columns data. more>>
DBIx::Class::LibXMLdoc is a Perl module to create an adjunct "Doc" accessor of a columns data which is automatically parsed into a LibXML documentElement (alpha-software).
SYNOPSIS
package My::DB::thingy;
__PACKAGE__->load_components(qw/ PK::Auto LibXMLdoc Core /);
__PACKAGE__->table(thingy);
__PACKAGE__->add_columns(qw/ id title body created owner whatever /);
__PACKAGE__->set_primary_key(id);
__PACKAGE__->libXMLdoc_columns(qw/ body /);
package main;
use My::DB;
my $schema = My::DB->connect(...);
my $thingy = $schema->resultset("thingy")->find(153);
print $thingy->bodyDoc->toString, "nn";
print $thingy->bodyDoc->textContent, "n";
This DBIx::Class component does not alter your data in any way. It takes column names to get the value from the column, parse it into XML with LibXML and make the documentElement object available via an autogenerated accessor named by affixing the column with "Doc."
The XML parsing is on demand so it doesnt waste time doing it to data you dont use or by doing it more than once to data that is unchanged.
A wrapper XML tag for the mini-document is auto-generated from the table + column name. So-
my $xhmlt =<<less
SYNOPSIS
package My::DB::thingy;
__PACKAGE__->load_components(qw/ PK::Auto LibXMLdoc Core /);
__PACKAGE__->table(thingy);
__PACKAGE__->add_columns(qw/ id title body created owner whatever /);
__PACKAGE__->set_primary_key(id);
__PACKAGE__->libXMLdoc_columns(qw/ body /);
package main;
use My::DB;
my $schema = My::DB->connect(...);
my $thingy = $schema->resultset("thingy")->find(153);
print $thingy->bodyDoc->toString, "nn";
print $thingy->bodyDoc->textContent, "n";
This DBIx::Class component does not alter your data in any way. It takes column names to get the value from the column, parse it into XML with LibXML and make the documentElement object available via an autogenerated accessor named by affixing the column with "Doc."
The XML parsing is on demand so it doesnt waste time doing it to data you dont use or by doing it more than once to data that is unchanged.
A wrapper XML tag for the mini-document is auto-generated from the table + column name. So-
my $xhmlt =<<less
Download (0.005MB)
Added: 2007-01-17 License: Perl Artistic License Price:
1010 downloads
Template::Plugin::XML::LibXML 1.07
Template::Plugin::XML::LibXML is a XML::LibXML Template Toolkit Plugin. more>>
Template::Plugin::XML::LibXML is a XML::LibXML Template Toolkit Plugin.
SYNOPSIS
[% USE docroot = XML.LibXML("helloworld.xml") %]
The message is: [% docroot.find("/greeting/text") %]
This module provides a plugin for the XML::LibXML module. It can be utilised the same as any other Template Toolkit plugin, by using a USE statement from within a Template. The use statment will return a reference to root node of the parsed document
Specifying a Data Source
The plugin is capable of using either a string, a filename or a filehandle as a source for either XML data, or HTML data which will be converted to XHTML internally.
The USE statement can take one or more arguments to specify what XML should be processed. If only one argument is passed then the plugin will attempt to guess how what it has been passed should be interpreted.
When it is forced to guess what type of data it is used the routine will first look for an open filehandle, which if it finds it will assume its a filehandle to a file containing XML. Failing this (in decreasing order) it will look for the chars "" tag (and assume its HTML string,) look for a "<<less
SYNOPSIS
[% USE docroot = XML.LibXML("helloworld.xml") %]
The message is: [% docroot.find("/greeting/text") %]
This module provides a plugin for the XML::LibXML module. It can be utilised the same as any other Template Toolkit plugin, by using a USE statement from within a Template. The use statment will return a reference to root node of the parsed document
Specifying a Data Source
The plugin is capable of using either a string, a filename or a filehandle as a source for either XML data, or HTML data which will be converted to XHTML internally.
The USE statement can take one or more arguments to specify what XML should be processed. If only one argument is passed then the plugin will attempt to guess how what it has been passed should be interpreted.
When it is forced to guess what type of data it is used the routine will first look for an open filehandle, which if it finds it will assume its a filehandle to a file containing XML. Failing this (in decreasing order) it will look for the chars "" tag (and assume its HTML string,) look for a "<<less
Download (0.013MB)
Added: 2006-09-13 License: Perl Artistic License Price:
1139 downloads
XML::Filter::DOMFilter::LibXML 0.02
XML::Filter::DOMFilter::LibXML is a SAX Filter allowing DOM processing of selected subtrees. more>>
XML::Filter::DOMFilter::LibXML is a SAX Filter allowing DOM processing of selected subtrees.
SYNOPSIS
use XML::LibXML;
use XML::Filter::DOMFilter::LibXML;
my $filter = XML::Filter::DOMFilter::LibXML->new(
Handler => $handler,
XPathContext => XML::LibXML::XPathContext->new(),
Process => [
/foo[@A=aaa]/*/bar => &process_bar,
baz[parent::*/@B=bbb] => &process_baz
]
);
my $parser = XML::SAX::YourFavoriteDriver->new( Handler => $filter );
# Some DOM processing
sub process_bar {
my ($node)=@_;
my $doc=$node->ownerDocument;
$node->appendTextChild("note","hallo world!");
$node->parentNode->insertAfter($doc->createElement("foo"),$node);
}
sub process_baz {
my ($node)=@_;
$node->unbindNode;
}
This module provides a compromise between SAX and DOM processing by allowing to use DOM API to process only reasonably small parts of an XML document. It works as a SAX filter temporarily building small DOM trees around parts selected by given XPath expressions (with some limitations, see "LIMITATIONS").
The filter has two states which will be refered to as A and B here. The initial state of the filter is A.
In the state A, only a limited vertical portion of the DOM tree is built. All SAX events other than start_element are immediatelly passed to Handler. On start_element event, a new element node is created in the DOM tree. All possible existing siblings of the newly created node are removed. Thus, while in state A, there is exactly one node on every level of the tree. Now all the XPath expressions are checked in the context of the newly created node. If none of the expressions matches, the parser remains in state A and passes the start_element event to Handler. Otherwise, the callback associated with the first expression that matched is remembered and the parser changes its state to B.
In state B the filter builds a complete DOM subtree of the new element according to the incomming events. No events are passed to Handler at this stage. When the subtree is complete (i.e. the corresponding end-tag is encountered), the callback associated with the XPath expression that matched is executed. The root element of the subtree is passed to the callback subroutine as the only argument.
The callback is allowed to do any DOM operations on the DOM subtree, even to replace it with one or more new subtrees. The callack must, however, preserve the elements parent node as well as all its ancestor nodes intact. Failing to do so can result in an error or unpredictable results.
When the callback returns, all subtrees that now appear in the DOM tree under the original element parent are serialized to SAX events and passed to Handler. After that, they are deleted from the DOM tree and the filter returns to state A.
Version restrictions:
- Note that this type of processing highly limits the amount of information the XPath engine can use. Most notably, elements cannot be selected by their content. The only information present in the tree at the time of the XPath evaluation is the elements name and attributes and the same information for all its ancestors. There is nothing known about possible child nodes of the element as well as of its position within its siblings at the time the XPath expressions are evaluated.
<<lessSYNOPSIS
use XML::LibXML;
use XML::Filter::DOMFilter::LibXML;
my $filter = XML::Filter::DOMFilter::LibXML->new(
Handler => $handler,
XPathContext => XML::LibXML::XPathContext->new(),
Process => [
/foo[@A=aaa]/*/bar => &process_bar,
baz[parent::*/@B=bbb] => &process_baz
]
);
my $parser = XML::SAX::YourFavoriteDriver->new( Handler => $filter );
# Some DOM processing
sub process_bar {
my ($node)=@_;
my $doc=$node->ownerDocument;
$node->appendTextChild("note","hallo world!");
$node->parentNode->insertAfter($doc->createElement("foo"),$node);
}
sub process_baz {
my ($node)=@_;
$node->unbindNode;
}
This module provides a compromise between SAX and DOM processing by allowing to use DOM API to process only reasonably small parts of an XML document. It works as a SAX filter temporarily building small DOM trees around parts selected by given XPath expressions (with some limitations, see "LIMITATIONS").
The filter has two states which will be refered to as A and B here. The initial state of the filter is A.
In the state A, only a limited vertical portion of the DOM tree is built. All SAX events other than start_element are immediatelly passed to Handler. On start_element event, a new element node is created in the DOM tree. All possible existing siblings of the newly created node are removed. Thus, while in state A, there is exactly one node on every level of the tree. Now all the XPath expressions are checked in the context of the newly created node. If none of the expressions matches, the parser remains in state A and passes the start_element event to Handler. Otherwise, the callback associated with the first expression that matched is remembered and the parser changes its state to B.
In state B the filter builds a complete DOM subtree of the new element according to the incomming events. No events are passed to Handler at this stage. When the subtree is complete (i.e. the corresponding end-tag is encountered), the callback associated with the XPath expression that matched is executed. The root element of the subtree is passed to the callback subroutine as the only argument.
The callback is allowed to do any DOM operations on the DOM subtree, even to replace it with one or more new subtrees. The callack must, however, preserve the elements parent node as well as all its ancestor nodes intact. Failing to do so can result in an error or unpredictable results.
When the callback returns, all subtrees that now appear in the DOM tree under the original element parent are serialized to SAX events and passed to Handler. After that, they are deleted from the DOM tree and the filter returns to state A.
Version restrictions:
- Note that this type of processing highly limits the amount of information the XPath engine can use. Most notably, elements cannot be selected by their content. The only information present in the tree at the time of the XPath evaluation is the elements name and attributes and the same information for all its ancestors. There is nothing known about possible child nodes of the element as well as of its position within its siblings at the time the XPath expressions are evaluated.
Download (0.004MB)
Added: 2006-10-25 License: Perl Artistic License Price:
1094 downloads
libglade 2.6.2
libglade library allows you to load glade interface files in a program at runtime. more>>
libglade library allows you to load glade interface files in a program at runtime. It doesnt require GLADE to be used, but GLADE is by far the easiest way to create the interface files.
For an idea of how to use the library, see test-libglade.c and glade/glade-xml.h.
To compile, you will need the libxml2 package (aka the gnome-xml module in CVS) which can be found on the GNOME FTP site or its mirrors. If you want GNOME support, you will also need the gnome-libs package installed.
LIBGLADE INTERNALS
If you are interested in how libglade works, here is a small description:
When glade_xml_new is called, the XML file is loaded using libxml. Libglade uses the SAX interface because it is faster and allows me to store the data in a more compact representation. The data in the XML file is cached, so that if you load the interface again, the file does not need to be reparsed. If the file has changed though, it will be reparsed.
Now glade_xml_build_widget is called for all the toplevel widgets in the interface (or if the second argument to glade_xml_new was non NULL, the widget it refers to is treated as the toplevel).
For each of these widgets, they are created by a function specific to the widget type, and then glade_xml_build_widget is called for each child widget, which is then packed into its parent. This is done recursively, so the whole interface is constructed.
New widget types are added to the widget class hash with the glade_register_widgets function. For an example, see the end of glade-gtk.c.
The automatic signal connection system uses the introspective capabilities of dynamic linking. By openning a handle on NULL, we can get at all the global symbols (global functions, global variables) in the executable, and the libraries it is linked against. This is used to find the address of a signal handler from its name, so that gtk_signal_connect can be called automatically for you.
Of course, there are other ways of connecting the signals if your platform doesnt support this feature.
Enhancements:
- Fix building with gtk+ 2.11.
<<lessFor an idea of how to use the library, see test-libglade.c and glade/glade-xml.h.
To compile, you will need the libxml2 package (aka the gnome-xml module in CVS) which can be found on the GNOME FTP site or its mirrors. If you want GNOME support, you will also need the gnome-libs package installed.
LIBGLADE INTERNALS
If you are interested in how libglade works, here is a small description:
When glade_xml_new is called, the XML file is loaded using libxml. Libglade uses the SAX interface because it is faster and allows me to store the data in a more compact representation. The data in the XML file is cached, so that if you load the interface again, the file does not need to be reparsed. If the file has changed though, it will be reparsed.
Now glade_xml_build_widget is called for all the toplevel widgets in the interface (or if the second argument to glade_xml_new was non NULL, the widget it refers to is treated as the toplevel).
For each of these widgets, they are created by a function specific to the widget type, and then glade_xml_build_widget is called for each child widget, which is then packed into its parent. This is done recursively, so the whole interface is constructed.
New widget types are added to the widget class hash with the glade_register_widgets function. For an example, see the end of glade-gtk.c.
The automatic signal connection system uses the introspective capabilities of dynamic linking. By openning a handle on NULL, we can get at all the global symbols (global functions, global variables) in the executable, and the libraries it is linked against. This is used to find the address of a signal handler from its name, so that gtk_signal_connect can be called automatically for you.
Of course, there are other ways of connecting the signals if your platform doesnt support this feature.
Enhancements:
- Fix building with gtk+ 2.11.
Download (0.41MB)
Added: 2007-07-31 License: GPL (GNU General Public License) Price:
503 downloads
libZI 0.0.3
libZI is a library that allows developers to store configuration information into an xml-file. more>>
libZI is a library that allows developers to store configuration information into an xml-file using a predefined and common syntax structure. The following encompasses the rationale behind such a library: It has become common in Unix based environments to store configuration information into text-files.
The problem, however, became the lack of a designated syntax and storage types. The solution, libZI, a typesafe way of storing and retrieving data from an xml file that appears completely seamless to the developer, for he or she does not have to worry about type conversions -- libZI handles it itself.
At present, libZI has the rough capability of an old Windows *.ini file. Simply, it lacks tree capabilities. That will be integrated into its design later on. Despite that limitation, the library supports storing and retrieving the primitive datatypes from C/C++.The library is still in its development state, and will probably remain there for a while. As for the syntax for libZIs output, that should remain rather consistent throughout the versions with the exception of some tag additions.
Adding the the consistency of libZI, it asserts itself as a cross-platform library. Its foundation resides on use of libXML2 (See II for further information). This means at the time of writing this, Linux, Unix, CygWin, MacOS (X), RISC OS, OS/2, VMS, and QNX should support libZI through its libXML foundation.
<<lessThe problem, however, became the lack of a designated syntax and storage types. The solution, libZI, a typesafe way of storing and retrieving data from an xml file that appears completely seamless to the developer, for he or she does not have to worry about type conversions -- libZI handles it itself.
At present, libZI has the rough capability of an old Windows *.ini file. Simply, it lacks tree capabilities. That will be integrated into its design later on. Despite that limitation, the library supports storing and retrieving the primitive datatypes from C/C++.The library is still in its development state, and will probably remain there for a while. As for the syntax for libZIs output, that should remain rather consistent throughout the versions with the exception of some tag additions.
Adding the the consistency of libZI, it asserts itself as a cross-platform library. Its foundation resides on use of libXML2 (See II for further information). This means at the time of writing this, Linux, Unix, CygWin, MacOS (X), RISC OS, OS/2, VMS, and QNX should support libZI through its libXML foundation.
Download (0.016MB)
Added: 2006-05-18 License: GPL (GNU General Public License) Price:
1257 downloads
XML::DT 0.45
XML::DT is a package for down translation of XML files. more>>
XML::DT is a package for down translation of XML files.
SYNOPSIS
use XML::DT;
%xml=( music => sub{"Music from: $cn"},
lyrics => sub{"Lyrics from: $v{name}n"},
title => sub{ uc($c) },
-default => sub{"$q:$c"} );
print dt($filename,%xml);
ABSTRACT
This module is a XML down processor. It maps tag (element) names to functions to process that element and respective contents.
This module processes XML files with an approach similar to OMNIMARK. As XML parser it uses XML::Parser or XML::LibXML module in an independent way. At configure stage, you should choose one of the back-ends.
<<lessSYNOPSIS
use XML::DT;
%xml=( music => sub{"Music from: $cn"},
lyrics => sub{"Lyrics from: $v{name}n"},
title => sub{ uc($c) },
-default => sub{"$q:$c"} );
print dt($filename,%xml);
ABSTRACT
This module is a XML down processor. It maps tag (element) names to functions to process that element and respective contents.
This module processes XML files with an approach similar to OMNIMARK. As XML parser it uses XML::Parser or XML::LibXML module in an independent way. At configure stage, you should choose one of the back-ends.
Download (0.028MB)
Added: 2006-09-14 License: Perl Artistic License Price:
1135 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above libxml search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed
Contact Us | Submit Software | Advertise with us | Terms and Conditions | Privacy Policy | Publisher List | Browse Categories | Blog | Discussion Board
Copyright (c)2005-2009 WareSeeker.com. All rights reserved.
Copyright (c)2005-2009 WareSeeker.com. All rights reserved.