📄 ch05_06.htm
字号:
<html><head><title>XML::Handler::YAWriter as a Base Handler Class (Perl and XML)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Erik T. Ray and Jason McIntosh" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly & Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="059600205XL" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl and XML" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img alt="Book Home" border="0" src="gifs/smbanner.gif" usemap="#banner-map" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Perl & XML" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch05_05.htm"><img alt="Previous" border="0" src="../gifs/txtpreva.gif" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch05_07.htm"><img alt="Next" border="0" src="../gifs/txtnexta.gif" /></a></td></tr></table></div><h2 class="sect1">5.6. XML::Handler::YAWriter as a Base Handler Class</h2><p>MichaelKoehne's<a name="INDEX-412" /> <a name="INDEX-413" /> <tt class="literal">XML::Handler::YAWriter</tt>serves as the "yet another" XMLwriter it bills itself as, but in doing so also sets itself up as ahandy base class for all sorts of SAX-related work.</p><p>If you've ever worked with Perl'svarious <tt class="literal">Tie::*</tt> base classes, the idea is similar:you start out with a base class with callbacks defined thatdon't do anything very exciting, but by theirexistence satisfy all the subroutine calls triggered by SAX events.In your own driver class, you simply redefine the subroutines thatshould do something special and let the default behavior rule for allthe events you don't care much about.</p><p>The default behavior, in this case, gives you something nice, too:access to an array of strings (stored as an instance variable on thehandler object) holding the XML document that the incoming SAX eventsbuilt. This isn't necessarily very interesting ifyour data source was XML, but if you use a PerlSAXish driver togenerate an event stream out of an unsuspecting data source, thenthis feature is lovely. It gives you an easy way to, for instance,convert a non-XML file into its XML equivalent and save it to disk.</p><p>The trade-off is that you must remember to invoke<tt class="literal">$self->SUPER::[methodname]</tt> with all your ownevent handler methods. Otherwise, your class may forget its roots andfail to add things to that internal strings array in its youthfulnaïveté, and thus leave embarrassing holes inthe generated XML document.</p><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch05_05.htm"><img alt="Previous" border="0" src="../gifs/txtpreva.gif" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img alt="Home" border="0" src="../gifs/txthome.gif" /></a></td><td align="right" valign="top" width="228"><a href="ch05_07.htm"><img alt="Next" border="0" src="../gifs/txtnexta.gif" /></a></td></tr><tr><td align="left" valign="top" width="228">5.5. A Handler Base Class</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img alt="Book Index" border="0" src="../gifs/index.gif" /></a></td><td align="right" valign="top" width="228">5.7. XML::SAX: The Second Generation</td></tr></table></div><hr width="684" align="left" /><img alt="Library Navigation Links" border="0" src="../gifs/navbar.gif" usemap="#library-map" /><p><p><font size="-1"><a href="copyrght.htm">Copyright © 2002</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -