gpt4 book ai didi

xml - 使用 libxml 和 XSD 文件在 Perl 中验证 XML

转载 作者:数据小太阳 更新时间:2023-10-29 02:46:44 25 4
gpt4 key购买 nike

我正在尝试让我的 perl 脚本从网上获取 Xxml 文件并根据 XSD 文件对其进行验证。

执行此操作的代码如下:

my $url = shift @ARGV;
my $response = $ua->get($url) || die "Can't fetch file";
my $file = $response->content;

my $schema_file = "schema.xsd";
my $schema = XML::LibXML::Schema->new(location => $schema_file);
my $parser = XML::LibXML->new;
my $doc = $parser->parse_string($file);
eval { $schema->validate($doc) };
die $@ if $@;

运行此命令会导致神秘错误:“元素 cropdata 内容检查失败”(cropdata 是我的第一个非根标签)。

在我的 XSD 文件中,条目如下所示:

<xs:element name="cropdata">
<xs:complexType>
<xs:sequence>

然后是一堆“<xs:element..../>”然后:

</xs:sequence>
</xs:complexType>
</xs:element>

进入 perl 调试器后显示 "my $doc = $parser->parse_string($file);" 行运行,$doc 打印为 XML::LibXML::Document=SCALAR(0x6b99f0)。

任何人都可以帮助我阐明我做错了什么吗? (警告:这可能是一个愚蠢的错误,我不会忘记它)。

最佳答案

事实证明,我提供的示例 xml 文件无效,你瞧,在 xmllint 中检查和更正后,一切正常。

关于xml - 使用 libxml 和 XSD 文件在 Perl 中验证 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com