2011-10-03 10 views
7

मेरे पास एक ऐसा फ़ंक्शन है जहां मैं फ़िल्टरएक्सएमएल नामक पैरा के रूप में एक स्ट्रिंग पास कर रहा हूं जिसमें गुणों में से एक में '&' शामिल है।XmlDocument फेंकना "एंटीटीनाम को पार्स करते समय एक त्रुटि आई"

मुझे पता है कि एक्सएमएल इसे पहचान नहीं पाएगा और यह मुझे एक गलती फेंक देगा। यहां मेरा कोड है:

public XmlDocument TestXMLDoc(string filterXml) 
{ 
    XmlDocument doc = new XmlDocument(); 
    XmlNode root = doc.CreateElement("ResponseItems"); 

    // put that root into our document (which is an empty placeholder now) 
    doc.AppendChild(root); 

    try 
    { 
     XmlDocument docFilter = new XmlDocument(); 
     docFilter.PreserveWhitespace = true; 

     if (string.IsNullOrEmpty(filterXml) == false) 
      docFilter.LoadXml(filterXml); //ERROR THROWN HERE!!! 

फ़िल्टर कोड को संपादित या विश्लेषण करने के लिए मुझे अपने कोड में क्या बदलना चाहिए? मेरे filterXml इस तरह दिखता है:

<Testing> 
<Test>CITY & COUNTY</Test> 
</Testing> 

मैं & से & करने के लिए अपने स्ट्रिंग मान बदल रहा हूँ। यहाँ है कि के लिए अपने कोड है:

string editXml = filterXml; 
    if (editXml.Contains("&")) 
    { 
     editXml.Replace('&', '&amp;'); 
    } 

लेकिन इसकी मुझे अगर बयान के अंदर पर एक अं दे: बहुत सारे शाब्दिक।

+0

एम्परसैंड (&) –

+0

की वजह से यह त्रुटि हो रही है, यह खेल में देर हो चुकी है, लेकिन यदि कोई और इसे भर देता है - "बहुत अधिक अक्षर" त्रुटि इस तथ्य के कारण होती है कि गुंडा अपने "के आसपास एकल उद्धरण का इस्तेमाल किया"। सिंगल कोट्स वर्णों को इंगित करते हैं, जिन्हें केवल एक ही चरित्र होने की अनुमति है। – Euric

उत्तर

13

ऊपर दिखाया गया फ़ाइल अच्छी तरह से गठित एक्सएमएल नहीं है क्योंकि एम्परसैंड बच नहीं गया है।

आप के साथ की कोशिश कर सकते हैं:

<Testing> 
    <Test>CITY &amp; COUNTY</Test> 
</Testing> 

या: निर्दिष्ट करने के लिए XML में एक ampersand आप एम्परसेंड चिह्न ('&') के बाद से &amp; का उपयोग करना चाहिए

<Testing> 
    <Test><![CDATA[CITY & COUNTY]]></Test> 
</Testing> 
+1

मैं ऐसा कुछ कर रहा हूं: string editXml = filterXml; यदि (editXml.Contains ("&")) { editXml.Replace ('&', '&'); } –

+0

लेकिन यह मुझे एक गलती दे रहा है: बहुत सारे अक्षर। –

+0

विकल्प 2 हालांकि थोड़ा और अधिक है, इस मामले में बहुत उपयोगी नहीं है। –

1

XML में एक विशेष अर्थ नहीं है ।

2

दूसरे प्रश्न के बारे में: स्ट्रिंग के लिए दो हस्ताक्षर हैं। बदलें। एक जो अक्षर लेता है, दूसरा जो तार लेता है। सिंगल कोट्स का उपयोग चरित्र अक्षर बनाने के प्रयासों - लेकिन "& amp;", सी # के लिए, वास्तव में एक स्ट्रिंग है (इसमें पांच वर्ण हैं)।

क्या यह डबल कोट्स के साथ काम करता है?

editXml.Replace("&", "&amp;"); 

आप थोड़ा अधिक रूढ़िवादी होना चाहते हैं, तो आप यह भी सुनिश्चित करना है कि & रों आप स्थान ले रही हैं

amp; quot; apos; gt; lt; or # 

में से एक ने पालन नहीं कर रहे (कोड लिख सकता है लेकिन यह अभी भी होगा एक परिपूर्ण फ़िल्टरिंग न हो)

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