Well done, poj, I find these scripts elegant. The ultimate one sidesteps values that perl thinks has zero length and is not too complex in its map/grep behavior that an intermediate learner can't reason through it.

$ pt 2.xml_writer.pl $ ./2.xml_writer.pl OS=linux Perl=v5.26.1 XML::Writer=0.625 <Contact Type="Information" Phone="13824898944" Email="abctest@abc.com +">I am here to ask questions</Contact> ---------- <Contact Phone="0" Type="Information" Email="tja@greeninterweb"> ---------- <Contact Email="tja@greeninterweb" Type="Intfermation">Phone is so las +t millenium</Contact> $ cat 2.xml_writer.pl #!/usr/bin/perl -w use 5.011; use XML::Writer; printf "OS=%s Perl=%s XML::Writer=%s\n", $^O, $^V, $XML::Writer::VERSI +ON; my $writer = XML::Writer->new(); my $cContactPhone = 13824898944; my $cContactEmail = 'abctest@abc.com'; $writer->startTag( "Contact", "Type" => "Information", "Phone" => $cContactPhone, "Email" => $cContactEmail ); $writer->characters('I am here to ask questions'); $writer->endTag("Contact"); print "\n----------\n"; my $writer2 = XML::Writer->new(); my %obj = ( Type => 'Information', Phone => 0, Email => 'tja@greeninterweb', ); my %attr = map { $_ => $obj{$_} } grep { length $obj{$_} } keys %obj; $writer2->startTag( "Contact", %attr ); print "\n----------\n"; my $writer3 = XML::Writer->new(); %obj = ( Type => 'Intfermation', Phone => '', Email => 'tja@greeninterweb', ); %attr = map { $_ => $obj{$_} } grep { length $obj{$_} } keys %obj; $writer3->startTag( "Contact", %attr ); $writer3->characters('Phone is so last millenium'); $writer3->endTag("Contact"); print "\n"; __END__ $

What applications would this have? It seems like xml is everywhere now that I'm looking at it, even the walls of the monastery!


In reply to Re^4: XML::Write challenges by Aldebaran
in thread XML::Write challenges by denzilhere

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.