XML

2011-04-18 19 views
8

लिखने का सबसे तेज़ तरीका क्या है मुझे अक्सर XML फ़ाइलों को बनाने की आवश्यकता है और मैं नौकरी करने के लिए XmlWrite चुनता हूं, मैंने पाया कि इसे WriteAttributeString (मुझे कुछ मामलों में बहुत सारे गुण लिखने की आवश्यकता है) पर अधिक समय बिताया है, मेरा प्रश्न है क्या एक्सएमएल फाइलें बनाने के लिए कुछ बेहतर तरीका है? अग्रिम में धन्यवाद।XML

+0

क्या आप एक्सएमएल सीरियलाइजेशन के बारे में जानते हैं? एक प्रकार को तत्काल करें, गुणों को भरें, फिर ऑब्जेक्ट की स्थिति का प्रतिनिधित्व करने वाले XML दस्तावेज़ बनाने के लिए इसे क्रमबद्ध करें। – Cheeso

+0

आप सही रास्ते पर हैं। XML लिखने का सबसे तेज़ तरीका XmlWriter है। – adatapost

+0

"तेज़" परिभाषित करें। निष्पादित करने के लिए लिखने/डीबग या तेज करने के लिए तेज़? जवाब अलग होगा। –

उत्तर

3

इसे सीधे एक फ़ाइल में लिखें उदाहरण के लिए FileStream (मैन्युअल रूप से बनाए गए कोड के माध्यम से)। इसे बहुत तेज बनाया जा सकता है, लेकिन इसे बनाए रखने के लिए भी बहुत मुश्किल है। हमेशा के रूप में, अनुकूलन एक पुरस्कार टैग के साथ आता है।

इसके अलावा, "premature optimization is the root of all evil" को न भूलें।

3

XmlSerializer

आप केवल वर्गों आप को क्रमानुसार करना चाहते हैं के पदानुक्रम परिभाषित करने के लिए है, वह सब है। इसके अतिरिक्त आप अपनी संपत्तियों पर लागू कुछ विशेषताओं के माध्यम से स्कीमा को नियंत्रित कर सकते हैं।

0

गुमनाम प्रकार का उपयोग करना और XML के लिए serializing mentioned here के रूप में एक दिलचस्प दृष्टिकोण है

6

सबसे तेजी से रास्ता है कि मैं जानता हूँ कि है दो एक सादे स्ट्रिंग के रूप में दस्तावेज़ संरचना लिख ​​सकते हैं और एक XDocument वस्तु में उसे पार्स:

string str = 
@"<?xml version=""1.0""?> 
<!-- comment at the root level --> 
<Root> 
    <Child>Content</Child> 
</Root>"; 

XDocument doc = XDocument.Parse(str); 
Console.WriteLine(doc); 

अब आपके पास एक संरचित और XDocument ऑब्जेक्ट का उपयोग करने के लिए तैयार होगा जहां आप अपने डेटा के साथ पॉप्युलेट कर सकते हैं। साथ ही, आप पूरी तरह से संरचित और आबादी वाले एक्सएमएल को स्ट्रिंग के रूप में भी पार्स कर सकते हैं और वहां से शुरू कर सकते हैं। इसके अलावा, आप हमेशा इस तरह से संरचित XElements उपयोग कर सकते हैं:

XElement doc = 
    new XElement("Inventory", 
    new XElement("Car", new XAttribute("ID", "1000"), 
    new XElement("PetName", "Jimbo"), 
    new XElement("Color", "Red"), 
    new XElement("Make", "Ford") 
) 
); 
doc.Save("InventoryWithLINQ.xml"); 

कौन सा उत्पन्न करेगा:

<Inventory> 
    <Car ID="1000"> 
    <PetName>Jimbo</PetName> 
    <Color>Red</Color> 
    <Make>Ford</Make> 
    </Car> 
</Inventory> 
+0

मुझे यह कुशल नहीं लगता है क्योंकि आप रनटाइम तक संरचना गलतियों और टाइपों का पता नहीं लगा सकते हैं। – Antoine

+1

फिर आप नमूना में संरचित XElement ऑब्जेक्ट्स का उपयोग कर सकते हैं। –

0

कितना ज्यादा समय है ... यह है 10 एमएस, 10 सेकंड या 10 मिनट ... और एक्सएमएल लिखने वाली पूरी प्रक्रिया कितनी है?

यह नहीं कह रहा कि आपको अनुकूलित नहीं करना चाहिए, लेकिन यह एक बात है कि आप कितनी बार प्रक्रिया को थोड़ा सा अनुकूलित करना चाहते हैं। अंत में जितनी तेजी से आप जाना चाहते हैं, उतना ही जटिल होगा कि इस मामले में (व्यक्तिगत राय) बनाए रखा जाए।

0

मैं व्यक्तिगत रूप से XmlDocument प्रकार का उपयोग करना पसंद करता हूं। नोड्स लिखते समय यह अभी भी थोड़ा भारी है लेकिन गुण एक-लाइनर हैं, और एक्सएमएलराइट का उपयोग करके सभी तरह से सरल है।