看板 Perl 關於我們 聯絡資訊
請教一下 如何使用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
AlanSung:XML::Stream::Parser::DTD ? 06/12 13:41
projectcat:目前我試出用XML::LibXML來valid,已經試出來了 但是 06/12 14:04
projectcat:無法知道哪幾行發生錯誤 06/12 14:05
※ 編輯: projectcat 來自: 140.120.6.67 (06/12 14:45) ※ 編輯: projectcat 來自: 140.120.6.67 (06/12 14:50)