2010-06-17 32 views
5

मैं चींटी के लिए काफी नया हूं और कार्यों को देख रहा हूं। मैं एक एक्सएमएल फ़ाइल उत्पन्न करने की कोशिश कर रहा हूँ। क्या मुझे बाहरी प्रक्रिया को कॉल करने की आवश्यकता है या क्या चींटी को ऐसा करने का कोई तरीका है? यह एक txt फ़ाइल में एक स्ट्रिंग भेजने और इसे .xml के रूप में सहेजने जितना आसान हो सकता है। क्या यह संभव है?क्या आप XML फ़ाइलों को बनाने/संशोधित करने के लिए चींटी का उपयोग कर सकते हैं?

+1

क्या ['बदलें '] (http://ant.apache.org/manual/Tasks/replace.html) आप जो करना चाहते हैं उसके लिए पर्याप्त कार्य नहीं है? – tonio

+0

धन्यवाद, वे उत्तर सभी बहुत उपयोगी हैं। – sarcasteak

उत्तर

5

आप वास्तव में क्या करने के लिए कोशिश कर रहे हैं क्या पर सही जवाब निर्भर करता है: दुश्मन उदाहरण, प्रलेखन उत्पन्न करने के लिए, साथ date उत्पादन में बदलते तो आप की तरह कुछ का उपयोग कर सकते हैं।

आप echo कार्य और तर्क प्रतिस्थापन का उपयोग कर एक छोटे से XML दस्तावेज़ बना सकते हैं, लेकिन यह बहुत जल्दी बनाए रखने के लिए कठिन हो जाता है।

यदि आपका लक्ष्य एक XML दस्तावेज़ जेनरेट करना है जो अधिकतर मूल्यों के साथ बॉयलरप्लेट है, तो आपको टेम्पलेट दस्तावेज़ बनाने और फिर Copy with filtering कार्य का उपयोग करना चाहिए।

यदि आपको चींटी (या कहीं और से एकत्रित) के डेटा के आधार पर दस्तावेज़ की संरचना को संशोधित करने की आवश्यकता है तो xslt कार्य का उपयोग बेहतर फिट होने जा रहा है। एक्सएसएलटी के साथ समस्या यह है कि यह हमेशा उपयोग करने के लिए सीधे आगे नहीं है (एक्सएसएलटी कार्यात्मक प्रोग्रामिंग का उपयोग करता है, प्रक्रियात्मक प्रोग्रामिंग नहीं)।

हो सकता है कि सही जवाब write your own Ant task कि वास्तव में क्या करेंगे आप क्या चाहते हैं, अभी जिस तरह आप यह चाहते है।

यदि आप बेहतर वर्णन कर सकते हैं कि आप क्या हासिल करने की कोशिश कर रहे हैं, तो मुझे यकीन है कि कोई अधिक सटीक उत्तर प्रदान करने में प्रसन्न होगा।

+0

धन्यवाद, मैं फ़िल्टरिंग के साथ प्रतिलिपि बनाने के साथ गया, बहुत अच्छी तरह से काम करता है! – sarcasteak

+0

बस एक 'एज-केस' प्रश्न - क्या 'प्रति-फ़िल्टर-फ़िल्टर' कार्य सही मानों को संभालता है जिसमें विशेष XML वर्ण (<, & etc) होते हैं?) – monojohnny

+0

फिल्टर के साथ प्रतिलिपि गूंगा है - यह सब वैल्यू प्रतिस्थापन के साथ प्रति बाइट कॉपी करता है। चाल यह है कि आप एक्सएमएल बिल्ड फ़ाइल के अंदर मूल्यों को परिभाषित कर रहे हैं। यदि आप पहले स्थान पर मूल्यों को सही तरीके से परिभाषित कर सकते हैं, तो कॉपी-इन-फ़िल्टर उन्हें ठीक कर देगा। –

1

आपको लगता है कि कर सकता है, हालांकि मुझे लगता है कुछ और की तरह है कि आप कुछ है कि आप चींटी से बाहर कह सकते हैं पहले से स्क्रिप्ट चाहते हैं, या जाएगा।

काम होगा:

<echo file="my.xml"><!--put escaped xml here--></echo> 

इस कोर्स के बाद से सब कुछ बच गया हो गया है कठिन होने जा रहा की है, लेकिन आप यह कर सकते हैं।

4

आप एक टेम्पलेट में दिए गए स्ट्रिंग को बदलने के लिए Replace कार्य का उपयोग करें, और xml के रूप में सहेज सकते हैं। एक साधारण उदाहरण, चींटी प्रलेखन के रूप में देखा:

<replace file="${src}/index.html" token="@@@" value="wombat"/> 

मैं इसे इस्तेमाल किया उदाहरण के लिए एक जावा परियोजना में वास्तविक निर्माण पहचानकर्ता द्वारा एक निरंतर @[email protected] को बदलने के लिए,।

आप और अधिक जटिल प्रसंस्करण क्या करना चाहते हैं, तो आप XSLT काम पर गौर करना चाहिए।

<xslt basedir="doc" destdir="build/doc" 
     extension=".html" style="style/apache.xsl"> 
    <param name="date" expression="07-01-2000"/> 
</xslt> 
10

आप अपने चींटी कार्यप्रवाह में भीतर XML प्रोसेसिंग के किसी भी प्रकार से निपटने के लिए है, तो xmltask सलाह दी जाती है। बहुत विस्तृत दस्तावेज और अच्छा समर्थन। आपको इसके अलावा कुछ XPATH knowledge है। यहां =>another helpful article

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

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