繁体   English   中英

用XML :: LibXML验证xml

[英]validating xml with XML::LibXML

我正在使用以下代码针对xsd尝试以下xml

my $schema = XML::LibXML::Schema->new(location => $xsd); 
my $parser = XML::LibXML->new;  
my $doc = $parser->parse_file($xml); 
eval { $schema->validate( $doc ) };  
if ( my $ex = $@ ) {
 print "error"
}     
else {
    print "Schema validated ok";
}

即使我的架构已通过ok验证,我也会在此行收到此警告/错误

http错误:没有这样的文件或目录

值得一提的是,xsd在我的本地桌面上,并且此行发出错误

my $schema = XML::LibXML::Schema->new(location => $xsd);

和$ xsd具有我的xml文件的位置c:\\ users \\ vivo \\ validate \\ xml.xsd

以下是我的模式的第一个概要

?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://ce.omb.edu/schema/34"
    xmlns:vivo="http://ce.omb.edu/schema/vivo/0.4"
    targetNamespace="http://ce.omb.edu/schema/subversion/vivi/2.0"
    elementFormDefault="qualified" attributeFormDefault="unqualified"
    version="2.0">
    <xsd:import namespace="http://ce.omb.edu/schema/vivo/0.4" schemaLocation="c:/users/vivo/desktop/validate/vivo.xsd"/>

有人可以帮我为什么收到此警告/错误消息吗?

尝试放入:

die "$xsd is not a file" unless -f $xsd;

my $schema行之前,再次运行它,看看它说什么。 根据上面的评论,它会告诉您它在哪里。 看起来文件名是完全错误的,或者$xsd不是绝对路径,并且从脚本的角度来看当前的工作目录不是您认为的那个目录。

如果是这种情况,请先查看http://perldoc.perl.org/Cwd.html,以了解如何解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM