I tried using XML::Simple, but it looks like that it would not meet my requirements. So i thought using LibXML would be a good option. In this case where I have something like
TestResult xmlns="somevalue" xmlns:xsi="somealue" xsi:schemaLocation=" +somevalue"> <Result>Pass</Result> <Comments>Executed Successfully</Comments> - <Parameters> - <ParameterGroup ID="Group1"> <Parameter key="Key1">Some Value</Parameter> <Parameter key="Key2">Some Value</Parameter> <Parameter key="Key3">Some Value</Parameter> </ParameterGroup> - <ParameterGroup ID="Group2"> <Parameter key="Key1">Some Value</Parameter> <Parameter key="Key2">Some Value</Parameter> <Parameter key="Key3">Some Value</Parameter> </ParameterGroup> </Parameters> - <Files> <File key="FileTag1">Path to file</File> <File key="FileTag2">Path to file</File> <File key="FileTag3">Path to file</File> </Files> </TestResult>
I have tried something like
use strict; use warnings; use XML::LibXML; my $doc = XML::LibXML::Document->new('1.0', 'utf-8'); my $root = $doc->createElement("TestResult"); my $param = $doc->createElement("Parameters"); $root->setAttribute('xmlns'=> 'somevalue'); $root->setAttribute('xmlns:xsi'=>'somevalue'); $root->setAttribute('xsi:schemaLocation' => 'somevalue'); my %tags = ( Result => 'Pass'); for my $name (keys %tags) { my $tag = $doc->createElement($name); my $value = $tags{$name}; print $value; $tag->appendTextNode($value); $root->appendChild($tag); } my %ParamGroup = (ParameterGroupID => '1'); for my $name1 (keys %ParamGroup) { my $ParamGroup = $doc->createElement($name1); my $value1 = $ParamGroup{$name1}; $ParamGroup->appendTextNode($value1); $param->appendChild($ParamGroup); } $doc->setDocumentElement($root); my $filename = "samplexml"; my $format = '1'; $doc->toFile($filename,$format);
the output I get for this is
<?xml version="1.0" encoding="utf-8"?> <TestResult xmlns="somevalue" xmlns:xsi="some value" xsi:schemaLocatio +n="some value"> <Result>Pass</Result> </TestResult>
Where is it going wrong.. some code sample please..

In reply to How to add child nodes using XMLLib by Perllace

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.