Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Recognized tags by HTML::Element

by jjanmaat (Initiate)
on Nov 23, 2013 at 18:16 UTC ( #1064063=perlquestion: print w/ replies, xml ) Need Help??
jjanmaat has asked for the wisdom of the Perl Monks concerning the following question:


I'm writing a script to process an HTML file and recognize a couple of new tags. The tags I want to include are similar to those in HTML::Template, in the way they work.

I was trying to get HTML::Template to do the work. However, I am doing some other processing using an HTML tree, and HTML::Element doesn't seem to handle the HTML::Template tags properly when rebuilding the HTML. This means I can't just dump the sub-tree I want to work on out as HTML and run it through as a template.

The issue is replacing things that are a block. An example I am trying to build is

<VARIF name="foo" value="test">

to do the obvious. HTML::Element doesn't recognize my new tag as a valid tag, in terms of building a tree below it. However, it does see it as a tag, and when the HTML method is called, it generates a <VARIF ..> </VARIF> pair, gets rid of the </VARIF> that was there originally, and outputs the stuff after the new </VARIF>.

Any suggestions for how to get my little bit processed properly?

Thanks (and my apologies for any lack of clarity).

Comment on Recognized tags by HTML::Element
Replies are listed 'Best First'.
Re: Recognized tags by HTML::Element
by Anonymous Monk on Nov 24, 2013 at 01:20 UTC

    Any suggestions for how to get my little bit processed properly?

    Nope, ATM its like a word puzzle and my word processor isn't firing on all cylinders :) How do I post a question effectively?

    #!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd pp /; use HTML::Element; use HTML::TreeBuilder; my $v = HTML::Element->new( qw/ VARIF name foo value test / ); $v->push_content("stuff"); print $v->as_HTML,"\n\n"; my $t = HTML::TreeBuilder->new(qw{ ignore_unknown 0 })->parse_content( +q{ <body> <VARIF name="foo" value="test"> stuff </VARIF> }); print $t->as_HTML,"\n\n"; __END__ <varif name="foo" value="test">stuff</varif> <html><head></head><body><varif name="foo" value="test"> stuff </varif +></body></html>

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1064063]
Approved by ww
Front-paged by Old_Gray_Bear
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2015-11-25 13:25 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (675 votes), past polls