{"id":616,"date":"2004-06-02T12:59:58","date_gmt":"2004-06-02T04:59:58","guid":{"rendered":"http:\/\/www.yuleshow.com\/?p=616"},"modified":"2004-06-02T12:59:58","modified_gmt":"2004-06-02T04:59:58","slug":"perl_xml_faq","status":"publish","type":"post","link":"https:\/\/www.yuleshow.com\/?p=616","title":{"rendered":"Perl XML FAQ"},"content":{"rendered":"<h1 class=\"english-h1\">Perl XML FAQ<\/h1>\n<h2 class=\"chinese\">Version 1.1\u4e2d\u6587\u7248<\/h2>\n<p class=\"chinese\">by <b>Jonathan Eisenzopf<\/b><br \/>\u7531<b>\u90b5\u5b9b\u6f8d<\/b>\u7ffb\u8b6f<\/p>\n<hr \/>\n<h2 class=\"chinese\">Credits<\/h2>\n<p><span class=\"chinese\"> \u611f\u8b1dClark Cooper, Matthew Sergeant, Enno Derksen,<br \/>\nKen MacLeod, Rob Cameron, Asakura Hiroshi\u4ee5\u53caWanshu Shao(\u90b5\u5b9b\u6f8d)\u5c0d\u6b64FAQ\u4f5c\u51fa\u7684\u5949\u737b.<br \/>\n<\/span><\/p>\n<hr \/>\n<h2 class=\"chinese\">Overview<\/h2>\n<p><span class=\"chinese\"> \u9019\u4efdFAQ\u5305\u542b\u4e86\u901a\u904ePerl\u4f7f\u7528\u53ca\u64cd\u4f5cXML\u7684\u4fe1\u606f. \u5982\u679c\u6709\u4efb\u4f55\u7684\u7cfe\u932f\u6216\u6dfb\u52a0\u4fe1\u606f\u8981\u6c42,\u8acb\u76f4\u63a5\u767c\u96fb\u5b50\u90f5\u4ef6\u7d66<br \/>\n<a HREF=\"mailto:eisen@pobox.com\">eisen@pobox.com<\/a>. \u9019\u4efdFAQ\u53ef\u4ee5\u5728<a href=\"http:\/\/www.perlxml.com\/faq\/perl-xml-faq.html\">http:\/\/www.perlxml.com\/faq\/perl-xml-faq.html<\/a>\u627e\u5230.<br \/>\nAsakura Hiroshi\u70ba\u9019\u4efdFAQ\u5efa\u7acb\u4e86\u4e00\u500b\u65e5\u8a9e\u8b6f\u6587,\u53ef\u4ee5\u5728<a href=\"http:\/\/db-www.aist-nara.ac.jp\/xml\/perl-xml-faq-j.html\">http:\/\/db-www.aist-nara.ac.jp\/xml\/perl-xml-faq-j.html<\/a>\u627e\u5230,<br \/>\nWanshu Shao(\u90b5\u5b9b\u6f8d)\u70ba\u9019\u4efdFAQ\u5efa\u7acb\u4e00\u500b\u7c21\u9ad4\u4e2d\u6587\u8b6f\u672c, \u53ef\u4ee5\u5728<a href=\"http:\/\/www.linux.org.cn\/xml\/perl-xml-faq-cn.html\">http:\/\/www.linux.org.cn\/xml\/perl-xml-faq-cn.html<\/a>\u627e\u5230.<br \/>\n\u9019\u4efdFAQ\u7684\u4fe1\u606f\u4e3b\u8981\u57fa\u65bc\u5728Perl XML\u90f5\u4ef6\u5217\u8868\u4e2d\u7684\u8a0e\u8ad6\u548c\u4f86\u5f80\u7684\u4fe1\u4ef6. \u5982\u679c\u60f3\u52a0\u5165\u8a72\u5217\u8868,\u53ef\u4ee5\u767c\u9001\u96fb\u5b50\u90f5\u4ef6\u7d66 <a HREF=\"mailto:Lyris@ActiveState.com\">Lyris@ActiveState.com<\/a>,<br \/>\n\u4e26\u5728\u6b63\u6587\u4e2d\u5beb\u6e05: <b>SUBSCRIBE Perl-XML<\/b>. <\/span><\/p>\n<p class=\"chinese\">\u9019\u4efdFAQ\u901a\u904e\u4e00\u5c0f\u6bb5Perl\u8173\u672c\u548c\u4e00\u500bXML\u6587\u4ef6\u751f\u6210. \u9019\u4efd\u8173\u672c\u53ef\u4ee5\u5f9e <a href=\"http:\/\/www.perlxml.com\/faq\/xmlfaq.pl\">http:\/\/www.perlxml.com\/faq\/xmlfaq.pl<\/a>\u7372\u5f97.<br \/>\n\u800cXML\u7684\u6e90\u6587\u4ef6\u5247\u53ef\u4ee5\u5728 <a href=\"http:\/\/www.perlxml.com\/faq\/perl-xml-faq.xml\">http:\/\/www.perlxml.com\/faq\/perl-xml-faq.xml<\/a>\u7372\u5f97.<br \/>\n\u5982\u60f3\u751f\u6210\u9019\u4efd Perl XML FAQ, \u904b\u884c <b>perl xmlfaq.pl perl-xml-faq.xml<\/b> \u5c07\u6703\u5728STDOUT\u4e2d\u6253\u5370\u51faHTML.\n<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q1<\/h2>\n<p><span class=\"chinese\"> \u5230\u5e95\u4ec0\u9ebc\u662fXML? <\/span><\/p>\n<p class=\"chinese\">\u53ef\u64f4\u5c55\u6a19\u8a3b\u8a9e\u8a00(eXtensible Markup Language),\u6216XML,\u662f\u7531 World<br \/>\nWide Web Consortium \u767c\u5c55\u8d77\u4f86\u7684SGML\u8a9e\u8a00\u7684\u4e00\u500b\u7c21\u5316\u7248\u672c. \u4e0d\u540c\u65bcHTML\u53ea\u63d0\u4f9b\u4e86\u6709\u9650\u7684\u6a19\u8a18\u5b9a\u7fa9, XML\u5141\u8a31\u4f5c\u8005\u6839\u64da\u4ed6\u5011\u6587\u6a94\u7684\u908f\u8f2f\u7d50\u69cb\u5b9a\u7fa9\u6a19\u8a18.<br \/>\n\u5728 <a href=\"http:\/\/www.xml.com\/xml\/pub\/98\/10\/guide0.html\">http:\/\/www.xml.com\/xml\/pub\/98\/10\/guide0.html<\/a>\u4e0a\u6709\u4e00\u4efd\u5f88\u597d\u7684\u95dc\u65bcXML\u7684\u4ecb\u7d39.<br \/>\n\u66f4\u591a\u7684\u95dc\u65bcXML\u7684\u4fe1\u606f\u5247\u53ef\u4ee5\u5728 <a href=\"http:\/\/www.w3.org\/XML\">http:\/\/www.w3.org\/XML<\/a>\u627e\u5230.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q2<\/h2>\n<p><span class=\"chinese\"> \u6709Perl\u5c08\u7528\u7684XML\u89e3\u6790\u5668\u55ce? <\/span><\/p>\n<p><p class=\"chinese\">\u662f\u7684. \u6709\u4e00\u4e9bPerl\u5c08\u7528\u7684\u89e3\u6790\u5668, \u4f46\u6700\u6b61\u8fce\u7684\u662f XML::Parser \u6a21\u584a. \u8d77\u5148\u7531 Larry<br \/>\nWall \u958b\u767c, \u73fe\u5728\u7531 <a href=\"mailto:coopercc@netheaven.com\">Clark Cooper<\/a><br \/>\n\u8ca0\u8cac\u7dad\u8b77 XML::Parser \u6a21\u584a. \u9019\u500b\u6a21\u584a\u662fExpat\u7684 Perl \u5916\u6bbc, Expat\u662f\u7531James Clark\u7531C\u5beb\u7684\u4e00\u500b\u975e\u9a57\u8b49\u6027\u89e3\u6790\u5668.<br \/>\n\u8a72\u6a21\u584a\u53ef\u4ee5\u5728\u4efb\u4f55CPAN\u670d\u52d9\u5668\u6216\u8005Clark\u5728 <a href=\"http:\/\/www.netheaven.com\/~coopercc\/xmlparser\/intro.html\">http:\/\/www.netheaven.com\/~coopercc\/xmlparser\/intro.html<\/a>\u7684\u4e3b\u9801\u4e0a\u627e\u5230.<br \/>\n\u5206\u767c\u7248\u4e2d\u5305\u542b\u4e86 Expat, \u56e0\u6b64\u4f60\u4e0d\u7528\u70ba\u9700\u8981\u55ae\u7368\u5b89\u88dd\u5b83\u800c\u64d4\u5fc3. \u95dc\u65bcExpat\u7684\u66f4\u591a\u4fe1\u606f\u5728 <a href=\"http:\/\/www.jclark.com\/xml\/expat.html\">http:\/\/www.jclark.com\/xml\/expat.html<\/a>.<br \/>\nClark Cooper\u540c\u6642\u4e5f\u5beb\u4e00\u500b\u975e\u5e38\u597d\u7684\u95dc\u65bc XML::Parser \u7684\u4ecb\u7d39, \u53ef\u4ee5\u5728 <a href=\"http:\/\/www.xml.com\/xml\/pub\/98\/09\/xml-perl.html\">http:\/\/www.xml.com\/xml\/pub\/98\/09\/xml-perl.html<\/a>\u627e\u5230.<\/p>\n<p class=\"chinese\">\u5728\u67d0\u4e9b\u60c5\u6cc1\u4e2d, \u4f60\u53ef\u80fd\u5728\u8655\u7406XML\u4e2d\u60f3\u4f7f\u7528\u6b63\u5247\u8868\u9054\u5f0f. \u7531Rob Cameron\u7528Perl\u5beb\u7684REX\u662f\u4e00\u500b\u521d\u7d1a\u89e3\u6790\u5668,<br \/>\nREX\u53ef\u4ee5\u5728 <a href=\"http:\/\/www.cs.sfu.ca\/~cameron\/REX.html\">http:\/\/www.cs.sfu.ca\/~cameron\/REX.html<\/a>\u627e\u5230.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q3<\/h2>\n<p><span class=\"chinese\"> \u6211\u9700\u8981\u4ec0\u9ebc\u7248\u672c\u7684Perl\u4f86\u4f7f\u7528XML::Parser? <\/span><\/p>\n<p class=\"chinese\">\u4f60\u61c9\u8a72\u5b89\u88dd\u6709 Perl 5.004\u6216\u66f4\u9ad8\u7684\u7248\u672c. \u5982\u679c\u4f60\u9700\u8981UTF8\u7de8\u78bc\u652f\u6301,\u4f60\u9700\u8981\u7248\u672c 5.005_52\u6216\u66f4\u9ad8&gt;<br \/>\n<a href=\"http:\/\/www.perl.com\">http:\/\/www.perl.com<\/a>\u662f\u76f8\u7576\u597d\u7684Perl\u8cc7\u6e90\u7ad9.<br \/>\n\u8981\u7372\u5f97\u6700\u65b0\u7684Perl\u5206\u767c\u7248, \u53ef\u4ee5\u8a2a\u554f <a href=\"http:\/\/www.perl.com\/CPAN\">http:\/\/www.perl.com\/CPAN<\/a>\u4e26\u9078\u64c7\u96e2\u4f60\u6700\u8fd1CPAN\u93e1\u50cf\u7ad9\u9ede.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q4<\/h2>\n<p><span class=\"chinese\"> \u6211\u662f\u5426\u53ef\u4ee5\u4f7f\u7528XML::Parser\u4f86\u4ee3\u66ffDTD\u53bb\u9a57\u8b49XML?<br \/>\n<\/span><\/p>\n<p class=\"chinese\">\u4e0d\u53ef\u4ee5. XML::Parser\u5efa\u7acb\u65bcExpat\u4e4b\u4e0a, Expat\u662f\u4e00\u500b\u975e\u9a57\u8b49\u89e3\u6790\u5668, \u56e0\u6b64\u4e00\u500bDOCTYPE\u8072\u660e\u6703\u53d7\u5230\u8a9e\u6cd5\u4e0a\u7684\u6aa2\u67e5,\u800c\u4e0d\u80fd\u7528\u4f86\u9a57\u8b49XML.<br \/>\n\u7136\u800c, Earl Hood\u5beb\u4e86perlSGML,\u5b83\u5305\u542b\u4e86\u4e00\u4e9bPerl\u8173\u672c\u548c\u5eab\u53ef\u4ee5\u89e3\u6790\u548c\u64cd\u7e31SGML. \u540c\u6642\u5b83\u4e5f\u5305\u542b\u4e86\u8655\u7406DTD\u7684\u80fd\u529b.<br \/>\n\u67e5\u770b <a href=\"http:\/\/www.oac.uci.edu\/indiv\/ehood\/perlSGML.html\">http:\/\/www.oac.uci.edu\/indiv\/ehood\/perlSGML.html<\/a><br \/>\n\u4ee5\u7372\u5f97\u66f4\u591a\u7684\u4fe1\u606f. \u4f60\u4e5f\u53ef\u4ee5\u5617\u8a66\u4e00\u4e0bDavid Megginson\u7684 SGMLspm\u6a21\u584a, \u53ef\u4ee5\u5728 <a href=\"http:\/\/www.perl.com\/CPAN\/authors\/David_Megginson\">http:\/\/www.perl.com\/CPAN\/authors\/David_Megginson<\/a>\u627e\u5230,<br \/>\n\u5b83\u7528\u4f86\u89e3\u6790James Clark\u7684NSGMLS\u89e3\u6790\u5668\u7684\u8f38\u51fa. \u4f60\u53ef\u4ee5\u5728<a href=\"http:\/\/www.jclark.com\/sp\/index.htm\">http:\/\/www.jclark.com\/sp\/index.htm<\/a>\u627e\u5230\u5305\u542b\u4e86NSGML\u7684SP\u5de5\u5177\u96c6.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q5<\/h2>\n<p><span class=\"chinese\"> \u6211\u5982\u4f55\u5728Win32\u4e0b\u5b89\u88dd XML::Parser? <\/span><\/p>\n<p class=\"chinese\">XML::Parser\u53ef\u4ee5\u5728ActiveState\u7684\u6a21\u584a\u88e1\u627e\u5230. \u53ef\u4ee5\u5728\u547d\u4ee4\u884c\u4e2d\u8f38\u5165: &#8216;ppm<br \/>\ninstall XML-Parser&#8217; \u4f86\u5b89\u88dd. Matt Sergeant \u901a\u5e38\u63d0\u4f9b\u6bd4ActiveState\u66f4\u65b0\u7684XML::Parser\u7248\u672c,<br \/>\n\u53ef\u4ee5\u547d\u4ee4 &#8216;ppm install &#8211;location=http:\/\/www.fastnetltd.ndirect.co.uk\/Perl\/packages<br \/>\nXML-Parser&#8217;\u4f86\u5b89\u88dd.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q6<\/h2>\n<p><span class=\"chinese\"> XML::Parser\u662f\u9762\u5411\u5c0d\u8c61\u7684\u55ce? <\/span><\/p>\n<p class=\"chinese\">\u7c21\u55ae\u5730\u8aaa, \u662f\u7684. XML::Parser\u662f\u7528\u4f86\u751f\u7522XML::Parser::Expat\u9700\u8981\u7684\u5be6\u4f8b\u7684\u751f\u7522\u5ee0\u5bb6.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q7<\/h2>\n<p><span class=\"chinese\"> XML::Parser\u662f\u5426\u57fa\u65bcSAX API? <\/span><\/p>\n<p class=\"chinese\">\u4e0d\u662f. XML::Parser\u57fa\u65bcExpat, \u4e00\u500b\u7531James Clark\u5beb\u7684\u975e\u9a57\u8b49\u89e3\u6790\u5668.<br \/>\n\u7136\u800c, Eric Prud&#8217;hommeaux\u958b\u767c\u4e86\u4e00\u500b\u7c21\u55ae\u7684\u5be6\u73fe\u65b9\u6848, \u53eb\u505a W3C::SAX::XmlParser, \u5b83\u53ef\u4ee5\u5728<br \/>\n<a href=\"http:\/\/www.w3.org\/1999\/02\/26-modules\/\">http:\/\/www.w3.org\/1999\/02\/26-modules\/<\/a>\u627e\u5230.<br \/>\n\u6ce8\u610f, \u9019\u500b\u5be6\u73fe\u65b9\u6848\u4e26\u975e\u6700\u7d42\u7d50\u679c, \u56e0\u70baKen Macleod\u76ee\u524d\u6b63\u5728\u5f9e\u4e8b\u6a19\u6e96\u7684 Perl-SAX \u63a5\u53e3\u5de5\u4f5c.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q8<\/h2>\n<p><span class=\"chinese\"> \u6709\u6c92\u6709\u4f9bPerl\u4f7f\u7528\u7684DOM\u6a21\u584a? <\/span><\/p>\n<p class=\"chinese\">\u6709. Enno Derksen \u6b63\u8207Clark Cooper\u5408\u4f5c\u7de8\u5beb\u4e00\u500b\u4f9bPerl\u4f7f\u7528\u7684DOM\u6a21\u584a,\u5b83\u662f\u4e00\u500b\u5be6\u73feXML::Parser\u7684\u5b50\u985e.<br \/>\n\u5b83\u7528DOM level 1\u8a9e\u6cd5\u7de8\u8b6f. \u5982\u679c\u4f60\u60f3\u4f7f\u7528\u5b83\u7684\u8a71,\u4f60\u9700\u8981\u5b89\u88dd\u6709 XML::Parser \u7248\u672c2.16\u6216\u66f4\u9ad8. \u8a72\u6a21\u584a\u53ef\u4ee5\u5728\u4f60\u7576\u5730\u7684CPAN\u6a94\u6848\u4e2d\u627e\u5230,<br \/>\n\u540c\u6642\u4e5f\u5b58\u653e\u5728 <a href=\"http:\/\/www.erols.com\/enno\/dom\/\">http:\/\/www.erols.com\/enno\/dom\/<\/a>\u4e4b\u4e2d.<br \/>\n\u53e6\u5916\u9084\u6709\u4e00\u500b\u4f7f\u7528\u81ea\u5e36XML\u89e3\u6790\u5668\u7684\u53ef\u4ee5\u5728 <a href=\"http:\/\/www2.ann.ne.jp\/~kojun\/TmpL1\/\">http:\/\/www2.ann.ne.jp\/~kojun\/TmpL1\/<\/a><br \/>\n\u627e\u5230.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q9<\/h2>\n<p><span class=\"chinese\"> \u6709\u6c92\u6709\u95dc\u65bcXSL\u7684? <\/span><\/p>\n<p class=\"chinese\">\u56e0\u70baXSL\u9084\u5728\u5927\u5e45\u767c\u5c55, \u76ee\u524d\u9084\u6c92\u6709\u4ec0\u9ebc\u8208\u8da3\u5efa\u7acb\u4f9bPerl\u61c9\u7528\u7684XSL\u5f15\u64ce. \u56e0\u6b64, \u5982\u679c\u4f60\u975e\u5e38\u60f3\u770b\u4e00\u770b\u7684\u8a71,<br \/>\n\u5c31\u5728Perl-XML\u90f5\u4ef6\u5217\u8868\u4e2d\u5927\u8072\u547c\u7c72\u5427.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q10<\/h2>\n<p><span class=\"chinese\"> CPAN\u4e2d\u7684XML\u6a21\u584a\u5728\u54ea\u88e1? <\/span><\/p>\n<p class=\"chinese\">\u5982\u679c\u4f60\u5728CPAN\u4e2d\u5c0b\u627e XML::Parser \u6216\u5176\u5b83\u7684\u6a21\u584a\u78b0\u5230\u4e86\u554f\u984c, \u53ef\u4ee5\u5617\u8a66\u4ee5\u4e0b\u7684\u93c8\u63a5:<br \/>\n<a href=\"http:\/\/www.perl.com\/CPAN-local\/modules\/by-category\/11_String_Lang_Text_Proc\/XML\/\">http:\/\/www.perl.com\/CPAN-local\/modules\/by-category\/11_String_Lang_Text_Proc\/XML\/<\/a>.<br \/>\n\u4e00\u500b\u95dc\u65bc\u6240\u6709Perl\/XML\u6a21\u584a\u4e26\u4e14\u9644\u5e36\u63cf\u8ff0\u7684\u5217\u8868\u53ef\u4ee5\u5728 <a href=\"http:\/\/www.perlxml.com\/modules\/perl-xml-modules.html\">http:\/\/www.perlxml.com\/modules\/perl-xml-modules.html<\/a>\u627e\u5230.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q11<\/h2>\n<p><span class=\"chinese\"> XML::DOM \u548c XML::Grove \u4e4b\u9593\u6709\u4ec0\u9ebc\u5340\u5225? \u6211\u8a72\u4f7f\u7528\u54ea\u4e00\u500b?<br \/>\n<\/span><\/p>\n<p><p class=\"chinese\">XML::DOM \u662f\u4e00\u500bWorld Wide Web Consortium (W3C)\u7684 Document<br \/>\nObject Model (DOM) Level 1\u7684\u5be6\u73fe. DOM \u5b9a\u7fa9\u4e86\u4e00\u500b\u7528\u65bcXML\u6a39\u7684\u63a5\u53e3\u800cXML::DOM\u5247\u662fDOM\u7684\u4e00\u500b\u5be6\u73fe,\u5176\u5de5\u4f5c\u65bc\u5728\u5167\u5b58\u4e2d\u7684XML\u7d50\u9ede\u6a39.<br \/>\n\u6240\u6709\u7684DOM\u5be6\u73fe(Perl\u6216\u662f\u5176\u5b83\u8a9e\u8a00)\u5747\u4f7f\u7528\u985e\u4f3c\u7684\u63a5\u53e3, \u4e26\u4e14\u7528\u4e00\u7a2eDOM\u53ef\u4ee5\u5be6\u73fe\u7684\u8a71,\u7528\u53e6\u4e00\u7a2e\u4e5f\u53ef\u4ee5. \u9019\u500b\u4fbf\u6377\u6027\u5141\u8a31\u6309\u4f60\u7684\u9700\u8981(\u5167\u5b58\u4f7f\u7528,\u5be6\u73fe\u8a9e\u8a00,\u6578\u64da\u5eab\u7b49)\u4f86\u9078\u64c7\u4f60\u9700\u8981\u7684DOM\u5be6\u73fe\u65b9\u6848.<\/p>\n<p class=\"chinese\">XML::Grove\u4f7f\u7528\u7684Perl\u7684\u6578\u7d44\u548chash\u4f86\u5b58\u653eXML\u5c0d\u8c61\u4e26\u5141\u8a31\u4f60\u4f7f\u7528\u5e38\u898f\u7684Perl\u6578\u7d44\u548chash\u51fd\u6578\u4f86\u64cd\u4f5cXML\u7d50\u9ede\u6a39.<br \/>\nXML::Grove \u57fa\u65bc\u570b\u969b\u6a19\u6e96\u5316\u7d44\u7e54(International Organization for Standardization<br \/>\n(ISO))\u7684 HyTime\u548cDSSSL\u6a19\u6e96\u6240\u63cf\u8ff0\u7684&#8221;property sets&#8221;.<\/p>\n<p class=\"chinese\">\u4f7f\u7528XML::DOM\u4f7f\u4f60\u66f4\u6613\u65bc\u628a\u6301\u5c07\u4ee3\u78bc\u8f49\u51fa\u5230\u5225\u7684\u8a9e\u8a00\u6216\u5225\u5176\u5b83\u7684DOM\u6a21\u584a[XML::DOM\u5728\u76ee\u524d\u662f\u5f9ePerl\u8f49\u51fa\u7684\u552f\u4e00\u5be6\u73fe\u65b9\u6cd5],\u53cd\u4e4b\u4ea6\u7136.<br \/>\nXML::Grove\u6709\u4e00\u500b\u7c21\u55ae\u7684Perl\u63a5\u53e3. \u7c97\u7565\u5730\u8b80\u4e00\u8b80 XML::DOM \u548c XML::Grove pod \u6587\u6a94\u53ef\u4ee5\u5e6b\u52a9\u4f60\u9078\u64c7\u4f7f\u7528\u54ea\u4e00\u500b\u6a21\u584a.<br \/>\n\u8a31\u591a\u6a21\u584a\u53ef\u4ee5\u540c\u6642\u8207DOM\u548c groves[*]\u4f7f\u7528, \u4f46\u4f60\u9700\u8981\u6aa2\u67e5\u4e00\u4e0b\u8a72\u6a21\u584a\u7684\u517c\u5bb9\u6027.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q12<\/h2>\n<p><span class=\"chinese\"> \u70ba\u4ec0\u9ebc\u7576\u6211\u5728XML\u6587\u4ef6\u9802\u7aef\u4f7f\u7528\u4e86XML\u8072\u660e\u6642, XML::Parser\u5c31\u6703\u5831\u932f?<br \/>\n<\/span><\/p>\n<p><p class=\"chinese\">\u4f60\u7684XML\u6587\u4ef6\u4e2d\u7684XML\u8072\u660e\u4e0d\u6b63\u78ba. \u5118\u7ba1\u770b\u4e0a\u53bbXML\u8207\u5927\u5c0f\u5beb\u7121\u95dc,\u7136\u800c\u4e8b\u5be6\u6b63\u597d\u76f8\u53cd.<\/p>\n<p class=\"chinese\">\u8072\u660e\u5fc5\u9808\u5c0f\u5beb\u4f75\u7528\u5305\u542b\u7248\u672c\u865f(\u540c\u6a23\u8981\u5c0f\u5beb). \u5b83\u770b\u4e0a\u53bb\u662f\u9019\u6a23\u7684:<br \/>\n<code><\/code> <\/p>\n<p class=\"chinese\"> \u4f60\u4e5f\u53ef\u4ee5\u5728\u6b64\u8072\u660e\u8a9e\u8a00\u7de8\u78bc\u4ee5\u53ca\u8a72\u6587\u6a94\u662f\u5426\u662f\u7368\u7acb\u7684:<br \/>\n<code><\/code>\n<\/p>\n<p class=\"chinese\"> \u6ce8\u610f: \u5728XML\u8072\u660e\u7684\u5c6c\u6027\u4e2d, \u4f60\u53ef\u4ee5\u4f7f\u7528\u55ae\u5f15\u865f\u6216\u96d9\u5f15\u865f. <\/p>\n<hr \/>\n<h2 class=\"chinese\">Q13<\/h2>\n<p><span class=\"chinese\"> \u7576\u6211\u4f7f\u7528XML::Parser\u6642, \u6211\u5f97\u5230\u4e00\u500b: Can&#8217;t find method<br \/>\n&#8220;read&#8221; in module FileHandle\u7684\u932f\u8aa4\u4fe1\u606f <\/span><\/p>\n<p><p class=\"chinese\">\u9019\u500b\u932f\u8aa4\u51fa\u73fe\u5728\u540c\u6642\u8207DBI\u4e00\u8d77\u4f7f\u7528 XML::Parser\u6642. \u9019\u4e26\u4e0d\u662fXML::Parser\u6216DBI\u7684\u6f0f\u6d1e,<br \/>\n\u800c\u662fPerl\u672c\u8eab\u7684\u6f0f\u6d1e. \u4f60\u9700\u8981\u5c07DBI\u6607\u7d1a\u52301.05\u7248\u672c\u6216\u66f4\u9ad8,\u4e5f\u53ef\u4ee5\u7c21\u55ae\u5730\u7528 <code>use FileHandle;<\/code>\u4f86\u8abf\u7528\u6587\u4ef6\u53e5\u67c4<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q14<\/h2>\n<p><span class=\"chinese\"> \u6211\u8a72\u5982\u4f55\u4e0d\u9000\u51fa\u4ee3\u78bc\u5c31\u7372\u5f97XML::Parser\u7684\u932f\u8aa4\u8fd4\u56de\u4fe1\u606f?<br \/>\n<\/span><\/p>\n<p><p class=\"chinese\">\u901a\u5e38, XML::Parser\u6a21\u584a\u5728\u9047\u5230\u975e\u826f\u69cb\u7684XML\u6642\u5c31\u6703\u7acb\u523b\u7d42\u6b62. \u4e8b\u5be6\u4e0a, \u9019\u662fXML\u89e3\u6790\u5668\u61c9\u8a72\u505a\u51fa\u7684\u53cd\u61c9.<br \/>\n\u7136\u800c\u5728\u67d0\u4e9b\u60c5\u6cc1\u4e0b, \u4f60\u5e0c\u671b\u4e0d\u9000\u51fa\u7a0b\u5e8f\u5c31\u8655\u7406\u932f\u8aa4. \u5728\u9019\u7a2e\u6642\u5019, \u4f60\u53ef\u4ee5\u5728<code>eval<\/code>\u584a\u4e2d\u8abf\u7528 <code>parse()<\/code>\u6216<br \/>\n<code>parsefile()<\/code>\u65b9\u6cd5, \u5c31\u50cf:<br \/>\n<code>eval { $p-&gt;parse($xml) };<\/code><br \/>\nor like:<br \/>\n<code>eval { $p-&gt;parsefile($filename) };<\/code>\n<\/p>\n<p class=\"chinese\">\u5982\u679c\u6709\u932f\u8aa4\u51fa\u73fe, \u5b83\u6703\u5c07\u932f\u8aa4\u6d88\u606f\u653e\u5230 <code>$@<\/code> \u8b8a\u91cf\u4e2d. \u4e0b\u9762\u662f\u4e00\u5c0f\u6bb5\u89e3\u6790XML\u6587\u4ef6\u7684\u8173\u672c.<br \/>\n\u5b83\u5728\u4e00\u500b<code>eval<\/code>\u584a\u4e2d\u5305\u542b\u4e86<code>parsefile()<\/code>\u65b9\u6cd5, \u7576\u932f\u8aa4\u51fa\u73fe\u7684\u6642\u5019,\u5c31\u53ef\u4ee5\u6253\u5370\u51fa\u4f86.<br \/>\n&lt;![CDATA[ <\/p>\n<pre> use strict; use XML::Parser; my $p = new XML::Parser();\ndie \"catch_error.pl n\" unless $ARGV[0] &amp;&amp; -e $ARGV[0];\neval { $p-&gt;parsefile($ARGV[0]) }; print \"Caught error: $@n\" if\n$@; print \"Done.n\"; <\/pre>\n<p> ]]&gt; <\/p>\n<hr \/>\n<h2 class=\"chinese\">Q15<\/h2>\n<p><span class=\"chinese\"> \u770b\u4e0a\u53bbXML::Parser\u628a\u6211\u7684\u6587\u672c\u8f49\u63db\u6210\u4e86UTF8. \u6709\u6c92\u6709\u8fa6\u6cd5\u4fdd\u6301\u6211\u539f\u4f86\u7684\u7de8\u78bc?<br \/>\n<\/span><\/p>\n<p><p class=\"chinese\">\u6709\u7684, \u4f7f\u7528<code>original_string<\/code>\u65b9\u6cd5, \u5305\u542b\u65bc2.19\u6216\u66f4\u9ad8\u7684\u7248\u672c\u4e2d,\u5b83\u6309\u7167\u5b57\u7b26\u672c\u8eab\u7684\u7de8\u78bc\u8fd4\u56de\u503c.<br \/>\n\u552f\u4e00\u7684\u7f3a\u9ede\u662f\u5b83\u5c07\u7981\u6b62\u5be6\u9ad4\u64f4\u5145. \u540c\u6642, \u7576\u4f60\u5728\u4f7f\u7528 XML::Parser::ExpatNB \u5c0d\u8c61\u6642, \u4f60\u7121\u6cd5\u4f7f\u7528\u8a72\u65b9\u6cd5, \u9019\u500b\u5c0d\u8c61\u5728\u7248\u672c2.22\u4e2d\u88ab\u5f15\u5165.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q16<\/h2>\n<p><span class=\"chinese\"> \u6709\u53ef\u4ee5\u5f9e\u4e00\u500b\u6d41\u4e2d\u8b80\u5165\u6578\u500b\u6587\u6a94\u55ce? <\/span><\/p>\n<p><p class=\"chinese\">\u4f60\u53ef\u4ee5\u5728<code>parse<\/code>\u6216<code>parse_file<\/code>\u4e2d\u4f7f\u7528<code>parse_start<\/code>\u65b9\u6cd5\u4f86\u5f9e\u4e00\u500b\u6d41\u4e2d\u8b80\u5165\u591a\u500b\u6587\u6a94.<br \/>\n\u5b83\u5c07\u5efa\u7acb\u4e00\u500b\u65b0\u7684 XML::Parser::ExpatNB\u5be6\u4f8b. \u591a\u500b\u6587\u6a94\u901a\u904e\u76f8\u7e7c\u8abf\u7528 <code>parse_more<\/code>\u65b9\u6cd5\u800c\u88ab\u89e3\u6790.<br \/>\n\u8abf\u7528<code>parse_done<\/code>\u65b9\u6cd5\u5247\u8868\u793a\u4f60\u5b8c\u6210\u4e86\u6587\u6a94\u7684\u8655\u7406. <\/p>\n<hr \/>\n<h2 class=\"chinese\">Q17<\/h2>\n<p><span class=\"chinese\"> \u6211\u5982\u4f55\u5728\u8655\u7406\u6587\u672c\u7684\u540c\u6642\u904e\u6ffe\u6389\u591a\u9918\u7684\u7a7a\u767d? <\/span><\/p>\n<p><p class=\"chinese\">\u4f60\u53ef\u4ee5\u5728\u6587\u672c\u53e5\u67c4\u4e2d\u904e\u6ffe\u6389\u591a\u9918\u7684\u7a7a\u767d: &lt;![CDATA[<\/p>\n<pre>sub text { my\n($xp, $data) = @_; return if ($ignorable_whitespace{$xp-&gt;current_element}\nand $data =~ \/^s*$\/m); # Rest of processing ... }<\/pre>\n<p>]]&gt;\n<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q18<\/h2>\n<p><span class=\"chinese\"> \u7576\u67d0\u500b\u5143\u7d20\u6709\u591a\u500b\u5c6c\u6027\u6642,\u6211\u5728XML::Parser 2.20\u4e2d\u5f97\u5230\u4e00\u500b &#8216;duplicate<br \/>\nattribute&#8217; \u932f\u8aa4\u4fe1\u606f. <\/span><\/p>\n<p><p class=\"chinese\">\u9019\u662fXML::Parser 2.20\u4e2d\u7684\u4e00\u500b\u6f0f\u6d1e, \u53ef\u4ee5\u6607\u7d1a\u5230\u65b0\u7684\u7248\u672c.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q19<\/h2>\n<p><span class=\"chinese\"> \u5373\u4f7fXML\u662f\u826f\u69cb\u7684,\u6211\u4f9d\u7136\u5f97\u5230\u5947\u5947\u602a\u602a\u7684XML::Parser\u932f\u8aa4\u4fe1\u606f.<br \/>\n<\/span><\/p>\n<p><p class=\"chinese\">\u5982\u679c\u4f60\u4f7f\u7528\u7684Perl\u662f Linux RedHat-5.2\u5c01\u88dd\u5206\u767c\u7684, \u61c9\u8a72\u6607\u7d1a\u5230\u4e00\u500b\u65b0\u7684Perl\u7248\u672c.<br \/>\nRedhat\u610f\u5916\u5730\u5728\u4ed6\u5011\u76845.2\u5206\u767c\u7248\u4e2d\u5e36\u4e86\u4e00\u500b\u6709\u6f0f\u6d1e\u7684Perl.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q20<\/h2>\n<p><span class=\"chinese\"> \u6709\u6c92\u6709\u53ef\u4ee5\u89e3\u6790RDF\u7684\u6a21\u584a? <\/span><\/p>\n<p><p class=\"chinese\">\u6709, Eric Prud&#8217;hommeaux \u958b\u767c\u4e86\u4e00\u500bW3C::Rdf::RdfParser,<br \/>\n\u5b83\u9700\u8981\u5728\u7b2c7\u500b\u554f\u984c\u4e2d\u63d0\u5230SAX\u7684Perl\u5be6\u73fe. \u53ef\u4ee5<a href=\"http:\/\/www.w3.org\/1999\/02\/26-modules\/\">http:\/\/www.w3.org\/1999\/02\/26-modules\/<\/a>\u627e\u5230.<\/p>\n<hr \/>\n<h2 class=\"chinese\">Q21<\/h2>\n<p><span class=\"chinese\"> \u6211\u5982\u4f55\u80fd\u5920\u63d0\u9ad8XML::Parser\u5728\u670d\u52d9\u5668\u4e0a\u8655\u7406\u6587\u6a94\u7684\u901f\u5ea6?<br \/>\n<\/span><\/p>\n<p><p class=\"chinese\">\u5c0d\u65bc\u521d\u5b78\u8005\u4f86\u8aaa, \u5982\u679c\u4f60\u4f7f\u7528Apache,\u61c9\u8a72\u5b89\u88dd <a href=\"http:\/\/perl.apache.org\">http:\/\/perl.apache.org<\/a>\u7684mod_perl.<br \/>\n\u5b83\u53ef\u4ee5\u6e1b\u5c11\u8abf\u7528Perl\u89e3\u8b6f\u5668\u4ee5\u53ca\u4efb\u4f55\u4f60\u4f7f\u7528\u7684\u6a21\u584a\u7684\u6642\u9593. \u5982\u679c\u4f60\u9084\u60f3\u8981\u66f4\u5feb\u7684\u8a71,\u53ef\u4ee5\u4f7f\u7528Data::Dumper\u6216Storable\u5c07XML::Parser\u7684\u5c0d\u8c61\u5b58\u5230\u786c\u76e4\u4e0a.<br \/>\n\u9019\u80fd\u6e1b\u5c11\u91cd\u8907\u89e3\u6790XML\u6587\u6a94\u7684\u6642\u9593. <\/p>\n<hr \/>\n<p class=\"english\">Copyright (c)1998 Jonathan Eisenzopf. All rights<br \/>\nreserved. Permission is hereby granted to freely distribute this<br \/>\ndocument provided that all credits and copyright notices are retained.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Perl XML FAQ Version 1.1\u4e2d\u6587\u7248 by Jonathan Eisenzopf\u7531\u90b5\u5b9b\u6f8d\u7ffb\u8b6f Credits \u611f\u8b1dClark Cooper, Matthew Sergeant, Enno Derksen, Ken MacLeod, Rob Cameron, Asakura Hiroshi\u4ee5\u53caWanshu Shao(\u90b5\u5b9b\u6f8d)\u5c0d\u6b64FAQ\u4f5c\u51fa\u7684\u5949\u737b. Overview \u9019\u4efdFAQ\u5305\u542b\u4e86\u901a\u904ePerl\u4f7f\u7528\u53ca\u64cd\u4f5cXML\u7684\u4fe1\u606f. \u5982\u679c\u6709\u4efb\u4f55\u7684\u7cfe\u932f\u6216\u6dfb\u52a0\u4fe1\u606f\u8981\u6c42,\u8acb\u76f4\u63a5\u767c\u96fb\u5b50\u90f5\u4ef6\u7d66 eisen@pobox.com. \u9019\u4efdFAQ\u53ef\u4ee5\u5728http:\/\/www.perlxml.com\/faq\/perl-xml-faq.html\u627e\u5230. Asakura Hiroshi\u70ba\u9019\u4efdFAQ\u5efa\u7acb\u4e86\u4e00\u500b\u65e5\u8a9e\u8b6f\u6587,\u53ef\u4ee5\u5728http:\/\/db-www.aist-nara.ac.jp\/xml\/perl-xml-faq-j.html\u627e\u5230, Wanshu Shao(\u90b5\u5b9b\u6f8d)\u70ba\u9019\u4efdFAQ\u5efa\u7acb\u4e00\u500b\u7c21\u9ad4\u4e2d\u6587\u8b6f\u672c, \u53ef\u4ee5\u5728http:\/\/www.linux.org.cn\/xml\/perl-xml-faq-cn.html\u627e\u5230. \u9019\u4efdFAQ\u7684\u4fe1\u606f\u4e3b\u8981\u57fa\u65bc\u5728Perl XML\u90f5\u4ef6\u5217\u8868\u4e2d\u7684\u8a0e\u8ad6\u548c\u4f86\u5f80\u7684\u4fe1\u4ef6. \u5982\u679c\u60f3\u52a0\u5165\u8a72\u5217\u8868,\u53ef\u4ee5\u767c\u9001\u96fb\u5b50\u90f5\u4ef6\u7d66 Lyris@ActiveState.com, \u4e26\u5728\u6b63\u6587\u4e2d\u5beb\u6e05: SUBSCRIBE Perl-XML. \u9019\u4efdFAQ\u901a\u904e\u4e00\u5c0f\u6bb5Perl\u8173\u672c\u548c\u4e00\u500bXML\u6587\u4ef6\u751f\u6210. \u9019\u4efd\u8173\u672c\u53ef\u4ee5\u5f9e http:\/\/www.perlxml.com\/faq\/xmlfaq.pl\u7372\u5f97. \u800cXML\u7684\u6e90\u6587\u4ef6\u5247\u53ef\u4ee5\u5728 http:\/\/www.perlxml.com\/faq\/perl-xml-faq.xml\u7372\u5f97. \u5982\u60f3\u751f\u6210\u9019\u4efd Perl XML FAQ, \u904b\u884c perl xmlfaq.pl perl-xml-faq.xml \u5c07\u6703\u5728STDOUT\u4e2d\u6253\u5370\u51faHTML. Q1 \u5230\u5e95\u4ec0\u9ebc\u662fXML? [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[47],"tags":[],"class_list":["post-616","post","type-post","status-publish","format-standard","hentry","category-perl"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=\/wp\/v2\/posts\/616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=616"}],"version-history":[{"count":0,"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=\/wp\/v2\/posts\/616\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yuleshow.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}