作者projectcat (神手猫)
看板Perl
标题[问题] XML with Perl
时间Sat Jun 12 13:22:28 2010
请教一下
如何使用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
1F:推 AlanSung:XML::Stream::Parser::DTD ? 06/12 13:41
2F:→ projectcat:目前我试出用XML::LibXML来valid,已经试出来了 但是 06/12 14:04
3F:→ projectcat:无法知道哪几行发生错误 06/12 14:05
※ 编辑: projectcat 来自: 140.120.6.67 (06/12 14:45)
※ 编辑: projectcat 来自: 140.120.6.67 (06/12 14:50)