c# - एक XML दस्तावेज़ में तत्वों की संख्या प्राप्त करने के लिए तेज़ तरीका




xml-parsing xmltextreader (2)

प्रगति रिपोर्टिंग उद्देश्यों के लिए एक XML दस्तावेज़ से तत्वों की संख्या प्राप्त करने के लिए कोई सर्वोत्तम अभ्यास है? मेरे पास एक 2 जीबी एक्सएमएल फ़ाइल है जिसमें मुझे फ्लाइट की प्रक्रिया की जरूरत है और मेरे विचार को पहले फ़ाइल में सभी तत्वों की संख्या प्राप्त करने के लिए और फिर काउंटर का उपयोग एक्स एक्स की एक्सएक्स दिखाने के लिए हमारे डेटाबेस में आयात किया जाता है।

फ़ाइल प्रसंस्करण के लिए हम संपूर्ण दस्तावेज़ को स्मृति में पढ़े बिना डेटा प्राप्त करने के लिए .net (C #) में XmlTextReader का प्रयोग कर रहे हैं (एक प्रकार की पेंसिंग के समान)।

तो सवाल यह है, मैं उन तत्वों की संख्या को बहुत जल्दी कैसे प्राप्त कर सकता हूं ... क्या कोई सर्वोत्तम अभ्यास है या मैं पहले पूरे दस्तावेज के माध्यम से जाना और i ++ जैसे कुछ करना चाहिए; ?

धन्यवाद!


आप निश्चित रूप से केवल दो बार दस्तावेज़ पढ़ सकते हैं - एक बार बस तत्वों की गिनती करने के लिए ( XmlReader.ReadToFollowing का उपयोग करते रहें। उदाहरण के लिए, (या संभवत: ReadToNextSibling ) ReadToNextSibling एक काउंटर बढ़ता जा रहा है जैसा कि आप जाते हैं:

int count = 0;
while (reader.ReadToFollowing(name))
{
    count++;
}

हालांकि, इसका अर्थ है कि फ़ाइल दो बार पढ़ना ...

वैकल्पिक रूप से फाइल की लंबाई खोजने के लिए है, और जैसा कि आप एक बार फाइल के माध्यम से पढ़ते हैं, अंतर्निहित धारा की स्थिति के आधार पर अब तक संसाधित फाइल के प्रतिशत की रिपोर्ट करें। यह कम सटीक होगा, लेकिन अधिक कुशल आपको Stream से सीधे XmlReader बनाने की आवश्यकता होगी ताकि आप स्थिति की जांच कर सकें।


int count = 0;
using (XmlReader xmlReader = new XmlTextReader(new StringReader(text)))
{
    while (xmlReader.Read())
    {
        if (xmlReader.NodeType == XmlNodeType.Element &&
            xmlReader.Name.Equals("Flight"))
            count++;
    }
}




xmltextreader