如何在Perl中使用Graph::easy模块处理XML文件

如何在Perl中使用Graph::easy模块处理XML文件,perl,graphml,Perl,Graphml,我想使用Perl模块Graph::easy将XML文件转换为graphML。我对Graph::module进行了reed,然后我尝试了一些示例如何添加节点以及如何添加类似的边,并使用Graph::Easy生成了graphML文件。例如: #!/usr/bin/perl use warnings; use strict; use Graph::Easy; my $graph = Graph::Easy->new(); $graph->add_edge( 'supplier', 'cu

我想使用Perl模块Graph::easy将XML文件转换为graphML。我对Graph::module进行了reed,然后我尝试了一些示例如何添加节点以及如何添加类似的边,并使用Graph::Easy生成了graphML文件。例如:

#!/usr/bin/perl
use warnings;
use strict;
use Graph::Easy;

my $graph = Graph::Easy->new();
$graph->add_edge( 'supplier', 'customer' );

open STDOUT,  '>',  'biji.graphml';
binmode STDOUT, ':encoding(UTF-8)';
print $graph->as_graphml();
close STDOUT;
运行这个脚本后,它生成了一个graphML文件,我使用一些工具在图形模型中表示它。但是如何使用Graph::easy处理这个XML文件并将其转换为GraphML文件呢

<orderinfo>
 <servicename>scc</servicename>
  <Customer>bvr</Customer>
   <Suppliers>
     <Supplier Id="svr" />
   </Suppliers>
</orderinfo>

鳞状细胞癌
超视距

我需要在图中将供应商、客户和服务名称表示为这些节点之间的节点和边。我在一个文件中有很多这样的XML数据。有人能帮我解决这个问题吗?

您的输入是XML。您的输出是一种XML方言。将一种XML转换为另一种XML的最佳方法可能是使用XSLT。根本不需要使用Perl。

正如davorg所说。您需要使用XSLT。XSLT只是一个样式表。在使用perl时,您不会离开它。Perl通过XML::LibXSLT等包提供对XSLT的支持

您可以将这些包用于XSLT。希望这会有所帮助

请看 和

如果我理解正确,您希望阅读带有Graph::Easy的GraphML文件。在我看来,它没有GraphML解析器,它只有自己的格式,VCG和GraphViz。请参阅@XoR No我想使用perl将xml转换为GraphML。如果您不想使用xml::LibXSLT将xml转换为GraphML,请给出一些示例。请共享一个示例xml和GraphML。我将为此编写一个XSLT模板。您能否提供一些使用XSLT将xml转换为graphML的示例。