मैं XML में एम्परसेंड कैसे बचता हूं ताकि वे HTML में संस्थाओं के रूप में प्रदान किए जाएं?


522

मेरे पास कुछ XML पाठ हैं जो मैं एक HTML पृष्ठ में प्रस्तुत करना चाहता हूं। इस पाठ में एक एम्परसेंड शामिल है, जिसे मैं इसकी इकाई प्रतिनिधित्व में प्रस्तुत करना चाहता हूं &:।

मैं XML में इस एम्परसेंड से कैसे बच सकता हूं? मैंने कोशिश की &, लेकिन यह वास्तविक एम्परसेंड चरित्र ( &) के रूप में डिकोड किया गया है , जो HTML में अमान्य है

इसलिए मैं इसे इस तरह से बचाना चाहता हूं कि इसे &XML आउटपुट का उपयोग करने वाले वेब पेज की तरह प्रस्तुत किया जाएगा ।


1
इस प्रश्न के नवीनतम संशोधन में दावा है कि "वास्तविक एम्परसेंड चरित्र (&) ... HTML में अमान्य है।" गलत है। वास्तव में, यहां तक ​​कि औचित्य के रूप में प्रदान किए गए लिंक किए गए प्रश्न का स्वीकृत उत्तर "एचटीएमएल 5 आपको इसे छोड़ देने की अनुमति देता है, लेकिन केवल तब जब निम्न डेटा एक वैध चरित्र संदर्भ की तरह नहीं दिखता है"
मार्क अमेरी

जवाबों:


422

जब आपका XML सम्‍मिलित होता है &, तो इसका परिणाम पाठ में होगा &

जब आप HTML में इसका उपयोग करते हैं, तो इसे इस रूप में प्रस्तुत किया जाएगा &


195

XML 1.0 कल्पना के .42.4 के अनुसार , आपको उपयोग करने में सक्षम होना चाहिए &

मैंने कोशिश की & amp; लेकिन इसकी अनुमति नहीं है।

क्या आप सुनिश्चित हैं कि यह एक अलग मुद्दा नहीं है? XML स्पष्ट रूप से ampersands से बचने के तरीके के रूप में परिभाषित करता है।


3
यह पूरी तरह से उचित था जब पोस्ट किया गया था, लेकिन परिवर्तन (या शायद स्पष्टीकरण) के बाद से यह एक उत्तर के रूप में निरर्थक लगता है। एक बात के लिए, उद्धृत उद्धरण अब प्रश्न में मौजूद नहीं है।
मार्क अमेरी

132

&तो समाधान यह और एक यूनिकोड दशमलव के लिए बराबर श्रेणीबद्ध करने के लिए है चरित्र ही XML में एक एस्केप वर्ण है, &इस प्रकार यह सुनिश्चित करना कोई त्रुटि XML पार्स देखते हैं कि। यही है, चरित्र &को प्रतिस्थापित करें &


5
मैं वास्तव में इस समाधान पसंद करते हैं! हेक्साडेसिमल नोटेशन का उपयोग करना भी संभव होना चाहिए:&
कोडमैनएक्स

2
तार्किक रूप से, यह काम क्यों करेगा? दोनों तारों में एक एम्परसेंड है, जिसमें अंत में वर्ण कोड के साथ एक ...
sijpkes

4
@sijpkes क्योंकि यहाँ पर एम्परसेंड पार्सर को बताता है कि निम्न वर्णों का उपयोग किसी अन्य वर्ण का प्रतिनिधित्व करने के लिए किया जाता है, जो इस मामले में एक एम्परसैंड होगा। XML में एक एम्परसेंड "अवैध" नहीं है - इसका सिर्फ एक विशेष अर्थ है। इसका अर्थ है "इसके बाद के सभी वर्ण जब तक आप एक अर्धविराम को हिट नहीं करते हैं, तब तक उसे किसी और चीज़ के लिए अनुवाद किया जाना चाहिए"। जब आपके पास आम तौर पर एक एम्परसेंड होता है, तो वर्णनात्मक वर्णों और अनुगामी अर्धविराम के बिना, पार्सर भ्रमित हो जाता है।
रिले मेजर

1
यह मेरे लिए जवाब है। जोड़ना & # 038; मेरे रिस्पांस हेडर के स्थान पर इसे तय किया और रिस्पांस हेडर पर एम्परसैंड नहीं दिखा रहा है। : D
iamjoshua

स्टैक ओवरफ्लो इतना बढ़िया है। यहाँ एक लगभग 11 साल पुरानी पोस्ट है जो मेरी समस्या को हल करती है। और इसे 690,000 से अधिक बार देखा गया है।
बिल

69

CDATAटैग का उपयोग करें:

 <![CDATA[
   This is some text with ampersands & other funny characters. >>
 ]]>

4
यह एक उत्तर के बजाय एक अनुमान है।
ब्रायन ओकले

10
यह एक अनुमान हो सकता है; हालांकि यह सही है। CDATA मार्कर कच्चे एम्परसेंड का उपयोग करने की अनुमति देते हैं।
क्वेंटिन

19
मूल पोस्ट ने कभी स्पष्ट नहीं किया कि कहां & का उपयोग किया जाना है, CDATA टैग का उपयोग केवल मानों की वास्तविक सामग्री के लिए विशेषता मानों के लिए नहीं किया जा सकता है, इसलिए मैंने '?' को शामिल किया है।
स्क्रैगर

1
यह xml डेटा की विशेषता के लिए भी बहुत अच्छा है और यह उत्तर xml रेंडरिंग के विषय में कई अन्य स्थितियों में सहायक है। मेरे लिए, यह वास्तव में कैमल एक्सएमएल डीएसएल में मदद करता है, जब मुझे शरीर या कुछ हेडर को कुछ एक्सएमएल डेटा के साथ सेट करने की आवश्यकता होती है, तो कैमल एक्सएमएल पार्सर ने सीडीएटीए सामग्री को अनदेखा कर दिया, उन्हें पात्रों की एक धारा के रूप में पढ़ा। इसके बिना ऊंट इंजन अवैध xml संरचना अपवादों को फेंकता है
किमुटाई 5

1
यह ठीक वही उत्तर है जिसकी मुझे आवश्यकता थी, क्योंकि मेरे मामले में मुझे यकीन नहीं है कि XML में कौन से पात्र आ सकते हैं, इसलिए मुझे उस खंड में सब कुछ भागने की आवश्यकता है।
मैट


11

मेरे मामले में मुझे इसे बदलना पड़ा %26

मुझे &एक URL में भागने की जरूरत थी । इसलिए &amp;मेरे लिए काम नहीं किया। Urlencode समारोह में परिवर्तन &करने के लिए %26। इस तरह न तो XML और न ही ब्राउज़र URL तंत्र ने URL की शिकायत की।


8
हाँ। नोट करें कि OP XML में भागने के बारे में था। URL में पलायन एक अलग मुद्दा है। असली मज़ा तब शुरू होता है जब आपके पास XML में URL, या URL में XML-टुकड़े होते हैं ...
Oskar Berggren

6

मैंने कोशिश की है और यह काम नहीं किया। विम दस ब्रिंक के उत्तर के आधार पर मैंने & amp; और यह काम किया।

मेरे एक साथी डेवलपर्स ने मुझे & # x26 का उपयोग करने का सुझाव दिया; और इस बात की परवाह किए बिना कि इसे कितनी बार प्रस्तुत किया जा सकता है।


5

&amp; XML दस्तावेज़ के अधिकांश अनुभागों में एक एम्परसैंड का प्रतिनिधित्व करने का तरीका है।

यदि आप XML को HTML के भीतर प्रदर्शित करना चाहते हैं, तो आपको पहले ठीक से एन्कोडेड XML बनाना होगा (जिसमें परिवर्तन &करना शामिल है &amp;) और फिर ठीक से एन्कोडेड HTML बनाने के लिए इसका उपयोग करें (जिसमें फिर से बदलना शामिल &है &amp;)। यह परिणाम है:

&amp;amp;

XML एन्कोडिंग के अधिक गहन विवरण के लिए, देखें:

XML दस्तावेज़ों में मुझे किन वर्णों से बचने की आवश्यकता है?



3

यूनिकोड का उपयोग कैसे करें \u0026? मेरे Android XML फ़ाइलों में मेरे लिए काम करता है। अगर समस्याएँ आती हैं, तो कोई मुझे बताए।


1
\uएक्सएमएल में सामान्य रूप से पलायन का कोई विशेष अर्थ नहीं है। -1।
मार्क अमेरी

@MarkAmery हां, उनका कोई विशेष अर्थ नहीं है, जो ठीक है कि वे इतनी अच्छी तरह से काम क्यों करते हैं - व्याख्या करने के लिए कुछ भी नहीं है, इसलिए गलत होने के लिए कुछ भी नहीं है। जावा यूनिकोड की व्याख्या करता है और एक ampersand दिखाता है जैसे ओपी चाहता है।
स्कॉट बिग्स

1
@ScottBiggs ओपी के सवाल के साथ क्या करना है?
फिलिप-एंड्रे लोरिन

1
@ScottBiggs तो यह ऑफ टॉपिक है। - 1।
फिलिप-आंद्रे लोरिन

1
@ScottBiggs तथ्य यह है कि यह आपके लिए काम करता है, और कुछ अन्य लोगों को लाभ हो सकता है, अप्रासंगिक है; आपका जवाब अन्य सभी पाठकों के लिए शोर है। क्योंकि यह ओपी के बारे में पूछे जाने वाले अधिक सामान्य मामले से नहीं निपटता है। यह आपकी सफलता को साझा नहीं करने के बारे में नहीं है। यह इसे रखने के बारे में है जहां यह है। आपका योगदान उपयोगी हो सकता है, लेकिन यहां एक उत्तर के रूप में प्रस्तुत नहीं किया गया है। हो सकता है कि एक टिप्पणी के रूप में, शायद दूसरे प्रश्न के उत्तर के रूप में (जो आप स्वयं बनाने और उत्तर देने के लिए स्वतंत्र हैं)।
फिलिप-एंड्रे लोरिन

0

विचार करें कि क्या आपका XML नीचे की तरह दिखता है।

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
  <Query>
</Employees>

आप <>सीधे उपयोग नहीं कर सकते क्योंकि यह एक त्रुटि फेंकता है। उस स्थिति में, आप &#60;&#62;उस के प्रतिस्थापन में उपयोग कर सकते हैं ।

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES &#60;&#62; 'GCF'
  <Query>
</Employees>

सभी कोड देखने के लिए यहां क्लिक करें


2
मुझे लगता है कि इस जवाब को पोस्ट किए जाने से पहले 7 साल में इस मैदान को अच्छी तरह से कवर किया गया था।
miken32
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.