Perl Tutorials - Herong's Tutorial Examples - v6.01, by Dr. Herong Yang
"suppressempty" - Parsing Empty Elements
This section provides a tutorial example on how to use the 'suppressempty' option to control how empty XML elements should be parsed.
The "suppressempty" option applies to XMLin() to control how empty elements should be parsed.
The following program shows you how to use the "suppressempty" option:
#- XmlSimpleEmpty.pl #- Copyright (c) HerongYang.com. All Rights Reserved. # use XML::Simple; use Data::Dumper; my $xs = new XML::Simple(keeproot => 1,searchpath => ".", forcearray => 1,); my $ref = $xs->XMLin("system.xml"); my $xml = $xs->XMLout($ref); print "\nHash dump without suppressempty => '':\n"; print Dumper($ref); print "\nXML output without suppressempty => '':\n"; print $xml; my $xs = new XML::Simple(keeproot => 1,searchpath => ".", forcearray => 1, suppressempty => ''); my $ref = $xs->XMLin("system.xml"); my $xml = $xs->XMLout($ref); print "\nHash dump with suppressempty => '':\n"; print Dumper($ref); print "\nXML output with suppressempty => '':\n"; print $xml; exit;
The input file, system.xml, has the following XML:
<?xml version="1.0"?> <system> This is a testing system. <user status="active"> <first_name>Mike</first_name> <last_name>Lee</last_name> <email>mike@lee.com</email> </user> <user> Missing first name and email. <first_name></first_name> <last_name>Wong</last_name> <email></email> </user> Needs to add more entries later. </system>
Here is the output of the program:
Hash dump without suppressempty => '': $VAR1 = { 'system' => [ { 'content' => [ ' This is a testing system. ', ' Needs to add more entries later. ' ], 'user' => [ { 'first_name' => [ 'Mike' ], 'status' => 'active', 'last_name' => [ 'Lee' ], 'email' => [ 'mike@lee.com' ] }, { 'first_name' => [ {} ], 'last_name' => [ 'Wong' ], 'content' => ' Missing first name and email. ', 'email' => [ {} ] } ] } ] };
XML output without suppressempty => '': <system> <content> This is a testing system. </content> <content> Needs to add more entries later. </content> <user status="active"> <first_name>Mike</first_name> <last_name>Lee</last_name> <email>mike@lee.com</email> </user> <user> Missing first name and email. <first_name></first_name> <last_name>Wong</last_name> <email></email> </user> </system> Hash dump with suppressempty => '': $VAR1 = { 'system' => [ { 'content' => [ ' This is a testing system. ', ' Needs to add more entries later. ' ], 'user' => [ { 'first_name' => [ 'Mike' ], 'status' => 'active', 'last_name' => [ 'Lee' ], 'email' => [ 'mike@lee.com' ] }, { 'first_name' => [ '' ], 'last_name' => [ 'Wong' ], 'content' => ' Missing first name and email. ', 'email' => [ '' ] } ] } ] }; XML output with suppressempty => '': <system> <content> This is a testing system. </content> <content> Needs to add more entries later. </content> <user status="active"> <first_name>Mike</first_name> <last_name>Lee</last_name> <email>mike@lee.com</email> </user> <user> Missing first name and email. <first_name></first_name> <last_name>Wong</last_name> <email></email> </user> </system>
A couple of the interesting things to note here:
Table of Contents
Data Types: Values and Variables
Expressions, Operations and Simple Statements
Name Spaces and Perl Module Files
Hard References - Addresses of Memory Objects
Objects (or References) and Classes (or Packages)
Typeglob and Importing Identifiers from Other Packages
String Built-in Functions and Performance
File Handles and Data Input/Output
Open Directories and Read File Names
File System Functions and Operations
Socket Communication Over the Internet
►XML::Simple Module - XML Parser and Generator
"forcearray" - Forcing Element Contents as Arrays
►"suppressempty" - Parsing Empty Elements
"keyattr" - Namings Attributes as Keys
XmlSimpleHash.pl - XML Hash Example
SOAP::Lite - SOAP Server-Client Communication Module
Perl Programs as IIS Server CGI Scripts
CGI (Common Gateway Interface)
XML-RPC - Remote Procedure Call with XML and HTTP
RPC::XML - Perl Implementation of XML-RPC
Integrating Perl with Apache Web Server
CGI.pm Module for Building Web Pages
LWP::UserAgent and Web Site Testing
Converting Perl Script to Executable Binary