2010-04-07 6 views
18

मैं उन परियोजनाओं जहां एक लाख बेहतर तरीके पूरा करने के लिए मैं क्या जरूरत है में से एक पर काम कर रहा हूँ, लेकिन मैं कोई विकल्प नहीं है और मैं इसे इस तरह से करना है। संदेश यह है:मैं की आवश्यकता है एक मानव पठनीय, फिर भी पार्स करने योग्य दस्तावेज़ स्वरूप

वहाँ एक वेब फार्म, जब उपयोगकर्ता इसे भरता बाहर और एक प्रस्तुत एक मानव पठनीय पाठ फ़ाइल प्रपत्र डेटा का उपयोग कर बनाई गई है पर पड़ती है। यह इस तरह दिखता है:

field_1: value for field one 

field_2: value for field two 
more data for field two (field two has a newline in it!) 

field3: some more data 

मेरे समस्या यह है: मैं इतना है कि उपयोगकर्ता इसे संपादित कर सकते इस पाठ फ़ाइल वेब फार्म में वापस पार्स करने के लिए की जरूरत है।

मैं मूर्खतापूर्ण तरीके से, इसे कैसे पूरा कर सकता हूं? डेटाबेस एक विकल्प नहीं है, मुझे इन टेक्स्ट फ़ाइलों का उपयोग करना होगा।

मेरे सवाल:

  • वहाँ यह करने के लिए एक सरल तरीका है ऊपर के उदाहरण में प्रारूप का उपयोग है?
  • क्या मानव पठनीय प्रारूप बेहतर काम करेगा (दूसरे शब्दों में मैं प्रारूप बदल सकता हूं)
  • मानव पठनीय अर्थ यह है कि एक गैर प्रोग्रामर इसे पढ़ सकता है और जान सकता है कि क्या है।

इस परियोजना पीएचपी उपयोग करता है।

अद्यतन

मानव पठनीय से मेरा मतलब है कि किसी को भी पाठ पढ़ सकता है और अपनी दादी सहित यह से अभिभूत हो नहीं,।

+1

यह बहुत कुछ है जो एक्सएमएल है ... मानव पठनीय लेकिन आसानी से पार्स किया जा सकता है। उस ने कहा, कच्चे एक्सएमएल सबसे सुंदर नहीं है। मैं डेटा फ़ाइल के लिए एक्सएमएल का उपयोग करने का सुझाव दूंगा, फिर मानव-पठनीय दृश्य के लिए प्रारूपित करने के लिए एक एक्सएसएलटी फ़ाइल से लिंक करें। –

+2

@DA मानव पठनीय द्वारा मेरा मतलब है कि मेरी माँ इसे पढ़ सकती है और भ्रमित या अभिभूत नहीं हो सकती है। – macinjosh

+0

@ मासीनजोश: मुझे आपकी निक पसंद है। जब मैं 12 वर्ष का था, तो मैं "द मैक एंड जोश" नामक एक कंपनी शुरू करना चाहता था :-) – Josh

उत्तर

21

मैं की आवश्यकता है एक मानव पठनीय, फिर भी पार्स करने योग्य दस्तावेज़ स्वरूप

यह वही है YAML होने के लिए बनाया गया था। आप इसके बारे में और अपनी साइट पर Wikipedia पर और अधिक पढ़ सकते हैं।

विकिपीडिया के शब्दों में: सूची, हैश, और अदिश:

YAML वाक्य रचना आसानी से सबसे उच्च स्तरीय भाषाओं के लिए आम डेटा प्रकार को मैप किया जा करने के लिए डिजाइन किया गया था।इसके परिचित दांतेदार रूपरेखा और दुबला उपस्थिति यह विशेष रूप से कार्य जहां मनुष्य को देखना या डेटा संपादित इस तरह के विन्यास फ़ाइलों के रूप में संरचनाओं,, डीबगिंग के दौरान डंपिंग की संभावना है के लिए अनुकूल बनाता है, और दस्तावेज़ हेडर

लाभ एक्सएमएल पर यह है कि यह टैग का उपयोग नहीं करता है जो उपयोगकर्ताओं को भ्रमित कर सकता है। और मुझे लगता है कि यह आईएनआई की तुलना में क्लीनर है (जिसका भी उल्लेख किया गया था) क्योंकि यह संकेतों, अर्धविरामों और उद्धरणों के बराबर के बजाय कॉलन का उपयोग करता है।

नमूना YAML लगता है:

invoice: 34843 
date : 2001-01-23 
bill-to: &id001 
    given : Chris 
    family : Dumars 
    address: 
     lines: | 
      458 Walkman Dr. 
      Suite #292 
     city : Royal Oak 
     state : MI 
     postal : 48046 
ship-to: *id001 
product: 
    - sku   : BL394D 
     quantity : 4 
     description : Basketball 
     price  : 450.00 
    - sku   : BL4438H 
     quantity : 1 
     description : Super Hoop 
     price  : 2392.00 
tax : 251.42 
total: 4443.52 
comments: > 
    Late afternoon is best. 
    Backup contact is Nancy 
    Billsmer @ 338-4338. 
+0

ओह, और वाईएएमएल – Josh

+0

पढ़ने/लिखने के लिए कम से कम दो PHP पुस्तकालय हैं http://stackoverflow.com/questions/294355/php-yaml-parsers – Josh

+0

एक महान प्रश्न के लिए महान उत्तर। मुझे वाईएएमएल के बारे में पता नहीं था। –

0

मैं सिर्फ इतना कहना वाला है कि एक INI स्ट्रिंग बहुत पठनीय है:

Pet_Name = "Fred" 

लेकिन, आप हमेशा अपने स्वयं के प्रारूप रोल कर सकते हैं। कुछ की तरह:

Key: ValueValueValueValueValueValue 
Key: ValueValue 

मूल रूप से, आप स्ट्रिंग नई पंक्तियों से, विस्फोट कर दे कोलन के सामने पाठ स्ट्रिंग्स के लिए देखो और का उपयोग करें कि कुंजी के रूप में, और पेट के बाद और न्यू लाइन से पहले डेटा मान है।

+0

जो कुछ मैं अब कर रहा हूं, लेकिन मैं कुछ पार्सिंग समस्याओं में भाग गया हूं जहां डेटा में टेक्स्ट शामिल था जो एक नई लाइन की तरह सम्मेलन को गड़बड़ कर देता था, जिसके बाद एक शब्द और एक कोलन होता था। पर्याप्त मूर्ख नहीं है। – macinjosh

1

XML एक विकल्प है।

+4

मानव-पठनीय आवश्यकताओं में से एक नहीं था? –

5

आप YAML

में

http://www.yaml.org/

मैं पाब्लो फर्नांडीज प्रतिक्रिया से सहमत देखने के लिए चाहते हो सकता है। मुझे लगता है कि जेएसओएन भी एक अच्छी पसंद हो सकता है।

11

मैं कहता हूँ या तो प्रयोग करेंगे

या सिर्फ lightweight markup language किसी के बारे में आप उचित समझे।

+0

मैं तर्क दूंगा कि आईएनआई और याम के अलावा उल्लिखित लाइटवेट मार्कअप भाषा मूल पोस्ट के लिए प्रासंगिक नहीं हैं क्योंकि वे संरचित टेक्स्ट बनाम संरचित डेटा की ओर अग्रसर हैं। –

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