2011-11-22 65 views
1

我想使用Perl模塊Graph :: easy將XML文件轉換爲graphML。我reeded Graph :: module然後我嘗試了一些例子如何添加節點,以及如何添加邊緣,並使用Graph :: Easy生成graphML文件。例如:如何使用Perl中的Graph :: easy模塊處理XML文件

#!/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數據。任何人都可以幫助我解決這個問題嗎?

+0

如果我的理解是否正確,要算賬讀取圖::易GraphML文件。我怎麼看它,它沒有GraphML解析器,它只有他自己的格式,VCG&GraphViz。請參閱[解析器](http://search.cpan.org/~shlomif/Graph-Easy-0.70/) – XoR

+0

@XoR不,我想使用perl將xml轉換爲GraphML。 – biji

回答

0

您的輸入是XML。您的輸出是XML的一種方言。將一種XML轉換爲另一種XML的最佳方式可能是使用XSLT。根本不需要使用Perl。

+0

您能否提供一些使用XSLT將xml轉換爲graphML的示例。 – biji

0

正如davorg所說。您需要使用XSLT。 XSLT只是一個樣式表。當你使用它時,你不會離開perl。 Perl提供了對XSLT的支持,例如XML :: LibXSLT等軟件包。

您可以將這些軟件包用於XSLT。希望這會有所幫助。

請參閱 http://metacpan.org/pod/XML::LibXSLThttp://www.w3schools.com/xsl/

+0

如果你不是我的,你可以舉一些例子來使用XML :: LibXSLT將xml轉換爲graphML。 – biji

+0

請分享一個示例XML和graphML。我將爲它編寫一個XSLT模板。 – rpg