2012-01-25 12 views
9

OmniXML पैकेज का उपयोग करना, क्या एक्सएमएल कोड को अन्य एक्सएमएल फाइल के अंदर स्टोर करना संभव है जिसमें इसका अपना एक्सएमएल डेटा है?स्टोर xml के अंदर xml

इस तरह

:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
<data> 
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     <otherxml>data</otherxml> 
</data> 

जहां टैग डेटा के अंदर, सब कुछ डेटा होना चाहिए। क्या कोई बच निकला है जो पार्सर को अगले डेटा को XML डेटा संरचना में पार्स करने से रोकता है?

या ओमनीएक्सएमएल इस स्थिति के लिए क्रमबद्ध करने के लिए समर्थन के साथ आता है?

कोई अन्य सरल विचार भी स्वागत है।

+0

क्या आपने कोशिश की है? या सिर्फ पूछ रहा है कि यह किया जा सकता है? – RBA

+0

ने कोशिश की, और पार्सिंग त्रुटि – none

उत्तर

21

आप CDATA उपयोग कर सकते हैं:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
<data> 
    <![CDATA[ 
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     <otherxml>data</otherxml> 
    ]]> 
</data> 

नोट जब आप data के लिए मूल्य मिलता है, यह एक स्ट्रिंग के रूप में किया जाएगा ताकि आप एक नए XML पार्सर के माध्यम से इसे चलाने के लिए होगा।

var 
    xml:IXMLDocument; 
    Node:IXMLNode; 
begin 
    xml := CreateXMLDoc;  
    xml.SelectSingleNode('/root/data',Node); 
    ShowMessage(GetNodeCData(Node,'data','')); 
end; 
+6

+1 मिली, आपको यह कहना बेहतर होगा कि आपको सीडीएटीए_ का उपयोग करना होगा;) – TLama

+0

इसे चलाने की कोई आवश्यकता नहीं है, इसे xml फ़ाइल बनाने के लिए लिखा जाना चाहिए। – none

+1

ध्यान दें कि एन्कोडिंग समस्याएं हो सकती हैं। उदाहरण के लिए, यदि एम्बेडेड एक्सएमएल , और बाहरी एक्सएमएल यूटीएफ -8 का उपयोग करता है, तो एक्सएमएल पार्सर को अभी भी आंतरिक एक्सएमएल को यूटीएफ -8 के रूप में संसाधित करना होगा। – mjn

3

डेटा में सामग्री rigth दूर पढ़ने के लिए आप इसे उदाहरण Base64 या uuencode के लिए में सांकेतिक शब्दों में बदलना कर सकते हैं नहीं है, तो:

यहाँ omniXML के लिए एक उदाहरण कोड है।

फिर आप डेटा को निकाल, डीकोड और पार्स कर सकते हैं

+3

यह निश्चित रूप से कठिन (और धीमा) तरीका है, क्योंकि आपको अभी भी एन्कोडेड टेक्स्ट को 'सीडीएटीए' अनुभाग में स्टोर करना होगा। –

+3

यदि आपके एम्बेडेड एक्सएमएल में सीडीएटीए भी हो सकता है तो मुझे लगता है कि आपको इसे एन्कोड करना होगा। मैं कहूंगा कि इस कारण से यह पसंदीदा तरीका है। –

+0

@DarianMiller वहां पर स्थान दिखता है। –