【发布时间】:2014-07-25 21:25:24
【问题描述】:
我想 1) 根据我的 XSD 定义文件创建一个散列 结构,2) 初始化该散列的元素,然后 3) 写出一个 XML 文件。这是我所在的位置:
我设法做的是创建一个哈希,但我是通过读取示例 XML 文件来做到这一点的——我这样做是因为我正在遵循我找到的代码示例,但我认为这些示例试图完成我需要做的事情以外的事情。我只需要知道哈希的样子我可以设置其元素的值,我不想或不需要知道某个特定的哈希初始化对于一些任意 XML 文件的样子。
这是我到目前为止所做的:
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
use XML::LibXML;
use XML::Compile::Schema;
use File::Spec;
use File::Copy;
use Getopt::Long;
use String::Util;
my $xsd = 'My_XMLSchema.xsd';
my $xml_in = 'example.xml';
my $schema = XML::Compile::Schema->new($xsd);
my $reader = $schema->compile(READER => '{http://tempuri.org/XMLSchema.xsd}RootElement');
my $hash = $reader->($xml_in);
my $doc = XML::LibXML::Document->new('1.0', 'UTF-8');
my $write = $schema->compile(WRITER => '{http://tempuri.org/XMLSchema.xsd}RootElement');
my $xml_out = $write->($doc, $hash);
如果我这样做
打印 Dumper $hash
如果我想创建我提供的 XML 文件,输出是我要编写的代码——这不是我需要的。我只想生成我的 $hash,然后我可以在其中粘贴数据值并创建一个 XML。似乎我应该只需要和 XSD 文件来执行此操作。这有意义吗?
我不明白 $reader 实际上是什么。
【问题讨论】: