Libxml2 का उपयोग कर एक एक्सएमएल पढ़ना

मैं libxml2.so का उपयोग LINUX प्लेटफ़ॉर्म पर सी में xml फ़ाइल को पार्स करने के लिए कर रहा हूं। जैसा कि नीचे उल्लिखित प्रारूप में मेरा एक्सएमएल है। मेरे पास फाइलों में कई खाते हो सकते हैं। मैं फोरम पर सुझाव देने के बाद पहली बार libxml का उपयोग कर रहा हूँ। मैं उस फाइल को पार्स करने में सक्षम हूं जिसमें मेरे पास केवल एक खाता था। मुझे समझ में नहीं आता कि अगर मेरे पास एक से अधिक खाते हैं तो मैं कैसे कार्यान्वित करूं। किसी ने लिनक्स पर सी, libxml में पहले इस तरह की चीज लागू की।


   123 
   XYZ 
   GA 



   223 
   ABC 
   FL 

0
जोड़ा संपादित
विचारों: 1

1 उत्तर

per XML-Definition, if you have more < ACCOUNT>s you need a surrounding tag f.e. < ACCOUNTS> around all the < ACCOUNT>-tags.

if you have that, you can go "into" the child, and you can while() over the ->next nodes.

EDITH: i suppose you use the DOM-modell. But if you have many (!) < ACCOUNT>s, you should swith to SAX for memory reasons. DOM builds a complete (M)apping of the (D)ocument to (O)bjects in memory.

एसएएक्स में, आप एक राज्य मशीन बनाते हैं, जो प्रत्येक प्रारंभिक टैग और टैग और डेटा को समाप्त करने के लिए फ़ाइल/मेमोरी के पढ़ने के दौरान ट्रिगर किया जाता है।

EDITH 2: if you have to find a special value you should consider to put the key-value (account_no?) into an attribute like < ACCOUNT no="123"> < NAME>< XYZ> < STATE>FL< /STATE> < /ACCOUNT>

0
जोड़ा
+1 .. क्या आपका मतलब है कि मेरे पास ऐसा कुछ होना चाहिए 123 .. 234 ?
जोड़ा लेखक dicaprio, स्रोत
मेरे पास एक और सवाल था, क्या हम मान्य कर सकते हैं अगर हमारे पास टैग बंद हो रहा है, f.e टैग संबंधित है ? यदि ऐसा है तो मैं किस फंक्शन का उपयोग कर सकता हूं?
जोड़ा लेखक dicaprio, स्रोत
सी में एसएक्स का उपयोग करके समझने के लिए मैं कोई अच्छा संदर्भ पढ़ सकता हूं?
जोड़ा लेखक dicaprio, स्रोत
हां! यह भी एक पाया .. http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.‌ html # परिचय
जोड़ा लेखक dicaprio, स्रोत
जोड़ा लेखक dicaprio, स्रोत
हाँ। और मैंने इसके बारे में एक दूसरा संस्करण बनाया।
जोड़ा लेखक Peter Miehle, स्रोत
यदि आप XMLParseDocument() या ParseMemory() करते हैं, तो आपको एक त्रुटि मिलती है, अगर फ़ाइल/मेमोरी मान्य नहीं है। यदि आप इसे SAX के साथ करते हैं, तो आपकी स्टेट मशीन इसे संभालने में सक्षम होना चाहिए।
जोड़ा लेखक Peter Miehle, स्रोत
जोड़ा लेखक Peter Miehle, स्रोत