Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

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:

Hello,

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">
stuff
</VARIF>

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
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?
Username:
Password:

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
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (11)
As of 2014-07-30 10:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (230 votes), past polls