मान लीजिए कि हम निम्न XML दस्तावेज़ करते हैं:QString/कंटेनर वर्ग के लिए QDomElement परिवर्तित
<root>
<options>
...
</options>
<children>
<child name="first">12345</child>
<child name="second">
<additionalInfo>abcd</additionalInfo>
</children>
</root>
मैं "बच्चा" नोड्स के एक स्ट्रिंग प्रतिनिधित्व प्राप्त है और उन्हें एक सरणी में संलग्न करने के लिए (मैं डॉन 'चाहते हैं टी एक्सएमएल सिंटैक्स को खोना नहीं चाहता है .text() एक विकल्प नहीं है)। उदाहरण के लिए, पहले बच्चे देखो की तरह होगा:
QString child = "<child name="first">12345</child>";
मैं तत्वों प्राप्त करने के लिए निम्न कोड का प्रयोग किया:
QDomDocument doc;
QDomElement element;
element = xml->documentElement();
if(element.isNull() == false)
{
element = element.firstChildElement("children");
if(element.isNull()) return;
element = element.firstChildElement("child");
while(element.isNull() == false)
{
doc = element.toDocument();
if(doc.isNull() == false)
{
// save string into array
array.append(doc.toString());
}
element = element.nextSiblingElement("child");
}
}
समस्या यह है कि doc.isNull रिटर्न हमेशा गलत है (लगता है कि मैं ' मैं दस्तावेज़ में दस्तावेज़ को रूपांतरित करने में असमर्थ हूं)। क्या कोई तरीका है कि मैं इसे कैसे कर सकता हूं?
संपादित करें:
मुझे लगता है कि QString जोड़ना चाहते हैं यहाँ अनिवार्य नहीं है। मूल रूप से किसी भी वर्ग जिसे बाद में डेटा पुनर्प्राप्त करने के लिए उपयोग किया जा सकता है ठीक है (मैं इन नोड्स को सहेज दूंगा और बाद में अन्य ऑब्जेक्ट्स को प्रारंभ करने के लिए उनका उपयोग करूंगा)। महत्वपूर्ण बात यह है कि जब भी मूल दस्तावेज़ नष्ट हो जाता है तब भी मुझे उन मानों तक पहुंचने में सक्षम होना चाहिए। उदाहरण के लिए, उन तत्वों को सीधे कुछ सरणी (जैसे QList) पर संग्रहीत करना संभव है, जिसका उपयोग बाद में उन तक पहुंचने के लिए किया जा सकता है।
विपरीत ऑपरेशन के बारे में क्या? स्ट्रिंग को देखते हुए एक QDomNode उत्पन्न होता है जिसे बाद में मौजूदा QDomDocument में जोड़ा जा सकता है? – Pierluigi
@Pierluigi, यह स्वयं ही एक प्रश्न होना चाहिए। यह बहुत शामिल है। आप 'QDomDocument' बनाते हैं,' setContent() 'का उपयोग करें, फिर किसी अन्य दस्तावेज़ में परिणाम की प्रतिलिपि बनाने के लिए 'QDomDocumentFragment' का उपयोग करें ... –
टिप्पणी/* = 4 * बंद नहीं है। तो यहाँ वाक्यविन्यास त्रुटि। –