Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages
XML::Parsepp(3) User Contributed Perl Documentation XML::Parsepp(3)

XML::Parsepp - Simplified pure perl parser for XML

  use XML::Parsepp;
  $p1 = new XML::Parsepp;
  $p1->parse('<foo id="me">Hello World</foo>');
  # Alternative
  $p2 = new XML::Parsepp(Handlers => {Start => \&handle_start,
                                      End   => \&handle_end,
                                      Char  => \&handle_char});
  # Another alternative
  $p3 = new XML::Parsepp;
  $p3->setHandlers(Char    => \&text,
                   Default => \&other);
  open(FOO, 'xmlgenerator |');
Allow duplicate attributes with option: dupatt => ';'
The concatenation string XML::Parsepp->new(dupatt => $str) is restricted to printable ascii excluding " and '
  $p1 = new XML::Parsepp(dupatt => ';');
  $p1->parse('<foo id="me" id="too">Hello World</foo>');
This will fire the Start event with the following parameters
  start($ExpatNB, 'foo', 'id', 'me;too');

This module provides a pure Perl implementation to parse XML documents. Its interface is very close to that of XML::Parser (in fact, the synopsis has, with some minor modifications, been copied from XML::Parser).

XML::Parsepp can be used as a pure Perl alternative to XML::Parser. The main use case is with XML::Reader where it can be used as a drop-in replacement. Here is a sample:
  use XML::Reader qw(XML::Parsepp);
  my $text = q{<init>n <?test pi?> t<page node="400">m <!-- remark --> r</page></init>};
  my $rdr = XML::Reader->new(\$text) or die "Error: $!";
  while ($rdr->iterate) {
      printf "Path: %-19s, Value: %s\n", $rdr->path, $rdr->value;

You can use the module XML::Parsepp::Testgen to generate testcases.
For example, you can generate a test file from an existing XML with the following program:
  use XML::Parsepp::Testgen qw(xml_2_test);
  my $xml =
    qq{#! Testdata for XML::Parsepp\n}.
    qq{#! Ver 0.01\n}.
    qq{<?xml version="1.0" encoding="ISO-8859-1"?>\n}.
    qq{<!DOCTYPE dialogue [\n}.
    qq{  <!ENTITY nom0 "<data>y<item>y &nom1; zz</data>">\n}.
    qq{  <!ENTITY nom1 "<abc>def</abc></item>">\n}.
    qq{#! ===\n}.
    qq{<?xml version="1.0" encoding="ISO-8859-1"?>\n}.
    qq{<!DOCTYPE dialogue\n}.
    qq{  <!ENTITY nom1 "aa &nom2; tt &nom4; bb">\n}.
    qq{  <!ENTITY nom2 "c <xx>abba</xx> c tx <ab> &nom3; dd">\n}.
    qq{  <!ENTITY nom3 "dd </ab> <yy>&nom4;</yy> ee">\n}.
    qq{  <!ENTITY nom4 "gg">\n}.
    qq{<root>hh &nom1; ii</root>\n};
  print xml_2_test(\$xml), "\n";
You can also extract the XML from an already existing test file (for example 'test.t') as follows:
  use XML::Parsepp::Testgen qw(test_2_xml);
  say test_2_xml('test.t');

Klaus Eichner <>

Copyright (C) 2009-2011 by Klaus Eichner
All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the artistic license 2.0, see

XML::Parsepp::Testgen, XML::Reader, XML::Parser.
2014-12-28 perl v5.28.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.