2010-03-08 13 views
5

मैंने एक XML फ़ाइल पढ़ी है और NSXMLDocument ऑब्जेक्ट में कनवर्ट किया है। लेकिन, नोड की स्ट्रिंग सामग्री में "<" की उपस्थिति के कारण, इसे "& लेफ्टिनेंट" में परिवर्तित कर दिया गया है। इसलिए, जब मैं इसे फ़ाइल में XML दस्तावेज़ के रूप में लिखता हूं, तो इसमें चरित्र "& लेफ्टिनेंट" होता है।कन्वर्ट & lt से <xml दस्तावेज़

मैं सामान्य XML फ़ाइल के रूप में फ़ाइल को कैसे लिख सकता हूं जिसमें "& लेफ्टिनेंट" को "<" द्वारा प्रतिस्थापित किया जाएगा।

धन्यवाद और सादर, लेनिन

उत्तर

4

जब < चरित्र टेक्स्ट नोड में दिखाई देता है, तो इसे &lt; के रूप में क्रमबद्ध किया जाएगा जब आप अपनी फ़ाइल को फ़ाइल में लिखते हैं।

जब आप बाद में उस फ़ाइल को xml पार्सर के साथ पढ़ते हैं, तो टेक्स्ट नोड में मूल < वर्ण होगा।

आपके पास टेक्स्ट नोड एन्कोडिंग सीडीएटीए का विकल्प भी है। इस मामले में धारावाहिक वर्ण < एक सीडीएटीए ब्लॉक के अंदर है। कई एक्सएमएल एपीआई सीडीएटीए और टेक्स्ट नोड्स के बीच कोई अंतर नहीं बनाए रखेंगे। मानव लेखकों के लिए संपादन को आसान बनाने के लिए सीडीएटीए को बचने के तंत्र के रूप में सोचा जाना चाहिए।

1

< एक xml के पाठ नोड्स में &lt; के रूप में प्रतिनिधित्व किया जाना चाहिए।

यदि आप इसे XML फ़ाइल में लिखने से पहले s/&lt;/</g का उपयोग करके इसे प्रतिस्थापित करते हैं, तो जब आप उस फ़ाइल से पढ़ते हैं तो यह पार्सिंग त्रुटि का कारण बन जाएगा।

0

आप ठीक इसके विपरीत आपरेशन

htmlspecialchars और

htmlentities()

+0

इसके लिए धन्यवाद। इसे जांच लेंगे। – boom

+0

हाय, मेरा कोड कोको में है। क्या आप इसे htmlspecialchars और htmlentities() – boom

+0

@Lenin के बजाय कोको में परिवर्तित करने के वैकल्पिक तरीकों को दे सकते हैं: क्षमा करें, मुझे कोको के बारे में पता नहीं है – Pavunkumar

0

जब यह एक एक्सएमएल टैग का हिस्सा नहीं < चरित्र भाग निकले किया जाना चाहिए करने के लिए निम्नलिखित समारोह का उपयोग कर सकते (see here)। आप वास्तव में एक्सएमएल कल्पना तोड़ना चाहिए नहीं ...

हालांकि, अगर आप चाहिए, तो आप एक चाल आपके XML दस्तावेज़ लिखने से पहले प्रदर्शन कर सकते हैं:

  1. एक अद्वितीय स्ट्रिंग के साथ < की अपनी बदल दें कि आपके XML पार्सर से बचने वाले नहीं होंगे (जो कुछ आप जानते हैं वह फ़ाइल में कहीं और नहीं होता है)। कुछ *-lt-* की तरह कुछ शायद होगा।
  2. पार्सर फ़ाइल & इसे सहेजने के लिए है।
  3. प्लेन टेक्स्ट के रूप में फ़ाइल में पढ़ें, और नियमित रूप से < चरित्र के साथ अपने उदाहरणों *-lt-* की बदलें।
  4. फ़ाइल को फिर से लिखें, एक्सएमएल पार्सर द्वारा लिखे गए संस्करण को क्लोबबर करना।

फिर, यह एक्सएमएल स्पेक को तोड़ने का एक भयानक विचार है ... ऐसा करके, कोई पार्सर आपके नए एक्सएमएल दस्तावेज़ को पढ़ने में सक्षम नहीं होगा।

0

आप php के माध्यम से XML दस्तावेज में < को & lt बदलना चाहते हैं:

$xmlFile = file_get_contents("example.xml"); 

$xml= str_replace(['&lt;','&gt;'],['<','>'], $xmlFile); 

echo $xml; 

मैं XML के माध्यम से एक सर्वर से समाचार फ़ीड हो रही है और फिर एक और xml फ़ाइल में संग्रहीत, मैं कर रहा हूँ geting परिणाम &lt; और &gt; के साथ परिणामस्वरूप मैंने इस विधि का उपयोग किया। एक्सएमएल स्टोर करने का यह सबसे बढ़िया तरीका नहीं है, लेकिन मैं समर्थक मेगा सीनियर बैक एंडर नहीं हूं।

संबंधित मुद्दे