[問題] XML with Perl

看板Perl作者 (神手貓)時間15年前 (2010/06/12 13:22), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/2 (看更多)
請教一下 如何使用perl來驗證XML檔是否符合DTD的格式?? #====分隔線=== 如何找出行數???? ##===== V-parser.pl #!/usr/bin/perl use XML::LibXML; # initialize the parser my $parser = new XML::LibXML; my $xmlfilename = shift @ARGV; # open a file and parse my $doc = $parser->parse_file( $xmlfilename ); if( $doc and $doc->is_valid ) { print "OK, it's valid.\n"; } else { print "Not OK. Validity error.\n"; } ##===== Q2.xml <!DOCTYPE memo SYSTEM "memo.dtd"> <memo priority="info"> <sto>Sara Bellum</sto> <================故意錯的 <from> &myname; </from> <message>Stop reading memos and get back to work!</message> </memo> ##===== memo.dtd <!ELEMENT memo (to, from, message)> <!ATTLIST memo priority (urgent|normal|info) 'normal'> <!ENTITY % text-only "(#PCDATA)*"> <!ELEMENT to %text-only;> <!ELEMENT from %text-only;> <!ELEMENT message (#PCDATA | emphasis)*> <!ELEMENT emphasis %text-only;> <!ENTITY myname "Bartholomus Chiggin McNugget"> ##=====shell $ V-parser.pl Q2.xml Not OK. Validity error. 如果想找出錯誤的行數怎麼改寫?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.6.67

06/12 13:41, , 1F
XML::Stream::Parser::DTD ?
06/12 13:41, 1F

06/12 14:04, , 2F
目前我試出用XML::LibXML來valid,已經試出來了 但是
06/12 14:04, 2F

06/12 14:05, , 3F
無法知道哪幾行發生錯誤
06/12 14:05, 3F
※ 編輯: projectcat 來自: 140.120.6.67 (06/12 14:45) ※ 編輯: projectcat 來自: 140.120.6.67 (06/12 14:50)
文章代碼(AID): #1C4ncMEL (Perl)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #1C4ncMEL (Perl)