2012-08-08 23 views
6

क्या सीएपीएएन में वाईएएमएल सूचियों को अच्छी तरह से गठित एक्सएमएल में परिवर्तित करने के लिए कोई मॉड्यूल हैं?मैं पर्ल में वाईएएमएल को एक्सएमएल में कैसे परिवर्तित करूं?

YAML से

:

- fruits: 
    - apple 
    - pear 
    - orange 

एक्सएमएल के लिए:

<fruits> 
    <apple /> 
    <pear /> 
    <orange /> 
</fruits> 
+1

शायद सबसे अच्छा विचार आपके डेटा में वाईएएमएल पार्सर का उपयोग करके पढ़ना होगा, और इसे एक्सएमएल फॉर्मेटर के साथ आउटपुट करना होगा। मैं अनुशंसा करता हूं कि आप एक्सएमएल :: सरल देखें। –

+0

@Csongor Fagwal मैंने ऐसा करने के बावजूद किया है। मुझे डर है कि काम करने के बजाय मैं अभी तक एक और सीपीएएन मॉड्यूल लिख रहा हूं। वैसे भी एक पर्ल प्रोग्रामर के रूप में, आलस्य एक गुण है। तो लैरी कहते हैं। एक सीपीएएन मॉड्यूल आदर्श होगा .-) – GeneQ

+0

मुझे लगता है कि आप एक एक्सएमएल दस्तावेज़ को कई तरीकों से एक्सएमएल दस्तावेज़ में मैप कर सकते हैं, इसलिए एक एक्सएमएल निर्माता के साथ वाईएएमएल पार्सर में शामिल होना मूल रूप से आप करना चाहते हैं। यह वास्तव में कोड की दो पंक्तियां है। यह वास्तव में वाईएएमएल-टू-एक्सएमएल कनवर्टर मॉड्यूल, आईएमएचओ बनाने के लिए समझ में नहीं आता है। यह जेपीजी कनवर्टर, जीआईएफ कनवर्टर के लिए एक पीएनजी, इमेजमैजिक का उपयोग करने के बजाय एक अलग पीएनजी बनाने जैसा है :) –

उत्तर

1

कोई उसके लिए कोई CPAN मॉड्यूल है। CPAN modules to read YAML हैं और modules to write XML हैं। डेटा स्थानांतरण perl डेटा संरचना होगी।

प्रश्न यह है कि आपका एक्सएमएल किस स्कीमा में होना चाहिए, और कई अलग-अलग एक्सएमएल मॉड्यूल हैं, इसलिए कोई भी सही जवाब नहीं है।

+0

सच है, कोई भी सही उत्तर नहीं है - लेकिन, यहां एक कामकाजी उदाहरण उपलब्ध है (ऊपर देखें)। – HoldOffHunger

2
use strictures; 
use YAML "Load"; 
use XML::Simple "XMLout"; 

my $data = Load(do{ local $/; <DATA> }); 
print XMLout($data, XMLDecl => 1); 

__DATA__ 
--- 
- fruits: 
    - apple 
    - pear 
    - orange 

वहाँ कि DWYW जाएगा XMLout के लिए विकल्पों में से एक संयोजन हो सकता है और आप रूट नाम आप चाहते हैं, आदि आप विकल्पों में से चकित कर देने वाला से ध्यान दें प्राप्त करने के लिए अपने डेटा संरचना जिगर करना पड़ सकता है कि अन्य डेटा प्रारूपों में एक्सएमएल को क्रमबद्ध करना और मार्शल करना निश्चित रूप से सरल नहीं है। पढ़ना: XML::Simple और YAML

+1

इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। – HoldOffHunger

0

सीपीएएन Util::XML_YAML_PERL के साथ आपकी मदद कर सकता है।

use Util::XML_YAML_Perl; 

my $obj = Util::XML_YAML_PERL->new(); 

my $yaml_text = <<UNTIL_HERE; 
- fruits: 
    - apple 
    - pear 
    - orange 
UNTIL_HERE 

print $obj->yaml_to_xml($yaml_text); 

# <fruits> 
# <apple /> 
# <pear /> 
# <orange /> 
# </fruits> 

नोट: इस मॉड्यूल एक गड़बड़ इसके प्रलेखन है, और एक पैच इस्तेमाल कर सकते हैं: util :: XML_YAML_Perl इसकी फली दस्तावेज में के रूप में सही पैकेज, नहीं 'एक्सएमएल :: YAML_PERL' है।

संबंधित मुद्दे