xml-twig

How do I add child elements to XML using Perl's XML::Twig?

I have the following XML file: <SOURCE_SERVER> <SERVER HOSTNAME="serv1"> <CIFS_SERVICE NETBIOSNAME="serv1"/> </SERVER> <SERVER HOSTNAME="serv2"> </SERVER> <SOURCE_SERVER> Now, I want to add child <CIFS_SERVICE NETBIOSNAME="serv2"/> to <SERVER HOSTNAME="serv2">. How do I do this using XML::Twig? ...

How can I add an attribute to a child element using Perl's XML::Twig?

I have an XML string like this: <DATA> <CHILD_DATA ATVAL="value1"/> <CHILD_DATA /> </DATA> The final output I want is: <DATA> <CHILD_DATA ATVAL="value1"/> <CHILD_DATA ATVAL="value2"/> </DATA> My twig $t is at <DATA>. Now I want to add an attribute to the second <CHILD_DATA />. The attribute is ATVAL="value2". I tried th...

How can I get content using XML::Twig?

My aim is that start_tag_handler (see below) get the apps/title content when it finds an apps/title tag (see sample XML below). And end_tag_handler gets the apps/logs content when it finds an apps/logs tag. But instead this code returns null and exits. This is the Perl code for parsing (using XML::Twig)###: #!/usr/local/bin/perl ...

Why doesn't XML::Twig call my end_tag_handler?

I try to call subroutine for each tag, but the end_tag_handlers is never invoked. My aim is a this sequence: ---sequence--- when <auto> call \&loading. when <apps><title> call \&kicks. when <apps><logs> call \&bye. when <apps> call \&app. when <apps><title> call \&kicks. when <apps><logs> call \&bye. when <apps> call \&app. when </au...

How can I extract some XML data from a URL using XML::Twig?

I want to get a specific string, for example 123 in <received>123</received> from some XML that will be retrieved from a URL. I have write a code but stuck with an error message: Attempt to bless into a reference at /usr/share/perl5/XML/Twig.pm line 392. How can I solve it? The code: use XML::Twig; use LWP::Simple; my $url = '...

Modifying an XML File using Perl

I have an XML file, with some format. I want the data to be modified in some way I want. I feel XML::Twig is the way to do it. I want to know if there is any other better alternative? ...

String corruption and nonprintable characters using XML::Twig in Win32 Perl

This is a really weird problem. It's taken me practically all day to whittle it down to a small executable script that demonstrates the problem fully. Problem Summary: I'm using XML::Twig to pull a data snippet from an XML file, then I'm sticking that data snippet into the middle of another piece of data, let's call it parent data. ...

Why does XML::Twig output the extracted string twice?

Hi! Why do I get my string two times in the output? #!/usr/bin/perl use warnings; use strict; use XML::Twig; my $string = '<cd_catalogue><title>Hello, World!</title></cd_catalogue>'; my $t= XML::Twig->new( twig_handlers => { cd_catalogue => \&cd_catalogue, }, pretty_print => 'indented', ); $t->parse( $string ); s...

How can I pass arguments and return values with XML::Twig's handler?

my question is: how to pass some arguments to XML:Twig's handler, and how to return the result from the handler. Here is my code, which hardcoded: <counter name = "music", report type = "month", stringSet index = 4>. How to implement this by using arguments $counter_name, $type, $id? and how to return the result of string_list? Than...

Can XML::Twig start parsing an XML file from a given line number?

I need to parse several large size XML files (one is ~8GB, others are ~4MB each) and merge them. Since both SAX and Tie::File are not suitable due to memory and time issues, I decided to try Twig. Suppose each XML file is composed of several elements as follows: <class name=math> <student>luke1</student> ... (a very very long...

Inserting the elements when id is not equal

I would like to insert updev.xml to the mainea.xml if $upd_dev_id is not equal. Tried this below but it won't insert. Replace works. #!c:\perl\bin\perl.exe use strict; use XML::Twig; my $upd_file = "updev.xml" ; my $main_file = "mainea.xml" ; # get the info we need by loading the update file my $t_upd= new XML::Twig(); $t_upd->pars...

How to save modified tree into disk using XML Twig.

Tried this below but I get a 0 file and this error. print() on unopened filehandle OUT at C:/Perl/site/lib/XML/Twig.pm line 3036. !c:\perl\bin\perl.exe use strict; use XML::Twig; my $upd_file = "updev.xml" ; my $main_file = "main.xml" ; get the info we need by loading the update file my $t_upd= new XML::Twig(); $t_upd->parsefile( $...

How do I get the entire inner content of an XML node including element tags?

Using XML::Twig, is there a way to get the entire HTML of a node? I do not want the text of the node, but the entire HTML with tags and all. input XML <content> <p>blah blah <b> bla bla </b> </p> <p> line 2 <i> test </i? </p> </content> Code my $twig = new XML::Twig( TwigRoots => {'content' => 1}, TwigHandlers => $twig_ha...

How can I extract child values from XML with Perl's XML::Twig?

I am parsing the XML file and trying to access the values in XML file. #!/usr/bin/perl -w use strict; use XML::Twig; my $file = 'files/camelids.xml'; print "File :: $file\n"; my $twig = XML::Twig->new(); $twig->parsefile($file); # print "twig :: $twig\n"; my $root = $twig->root; # print "root :: $root\n"; my $num = $root->children(...

How can I parse incomplete XML fragments with Perl's XML::Twig?

I'm trying to extract data from log files in XML format. As these are huge, I am using XML::Twig to extract the relevant data from a buffer instead of the whole file(s) As these are concatenaded data from STDIN, the XML is far from well formed. So frequently the parser stops with an error. How can I get the XML parser to ignore the erro...

How can I add entity declarations via XML::Twig programmatically?

For the life of me I cannot understand the XML::Twig documentation for entity handling. I've got some XML I'm generating with HTML::Tidy. The call is as follows: my $tidy = HTML::Tidy->new({ 'indent' => 1, 'break-before-br' => 1, 'output-xhtml' => 0, 'output-xml' => 1, 'char-encoding' => 'raw', }...