2010-09-13 10 views
5

मैं ReadXML विधि का उपयोग कर DataSet में एक स्ट्रिंग पढ़ रहा हूं। जब मैं कोशिश करता हूं कि यह पथ त्रुटि में एक अवैध वर्ण देता है। यदि मैं एक XML फ़ाइल के रूप में IE में स्ट्रिंग को सहेजता और खोलता हूं तो यह encoding="UTF-16" लाइन पर एक त्रुटि फेंकता है, इसलिए मुझे लगता है कि समस्या का कारण है।डेटासेट। रीडएक्सएमएल पथ में अमान्य वर्ण देता है। क्यूं कर?

क्या इसे ठीक करने का कोई आसान तरीका है? क्या यह यूनिकोड या यूटीएफ -16 को संभालने में सक्षम नहीं होना चाहिए?

किसी भी सुझाव की बहुत सराहना की जाएगी। सी # & नेट 4

<?xml version="1.0" encoding="UTF-8" ?> 
<iCall xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Rows> 
<Row> 
    <Code /> 
    <Title>Test Title</Title> 
    </Row> 
    </Rows> 
</iCall> 

उत्तर

16

DataSet.ReadXml(string) फ़ाइल पथ नहीं एक xml दस्तावेज़ की उम्मीद है। तो यह एक filepath के रूप में अपने xml दस्तावेज़ को पार्स करने की कोशिश करता है और

विफल रहता है यदि आप केवल अपने एक्सएमएल क्रम है, तो आप इस तरह कर सकते हैं:

StringReader sr = new StringReader(xml); 
dataSet.ReadXml(sr); 
1

का उपयोग करते हुए मुझे लगता है कि आप ReadStartElement उपयोग करने के लिए अगले नोड के लिए अग्रिम और डेटासेट में पूरी तालिका पढ़ने की कोशिश कर सकते हैं।

XmlTextReader r = new XmlTextReader(@"c:\b.xml"); 
r.MoveToContent(); 
r.ReadStartElement("iCall"); 
DataSet ds = new DataSet(); 
ds.ReadXml(r); 
this.dataGrid1.DataSource = ds; 
0

यह नमूना कोड समस्या ठीक हो जाएगी।

XmlDocument layoutXml = new XmlDocument(); 
layoutXml.Load(MyXmlPath); //file location  

StringReader sr = new StringReader(layoutXml.DocumentElement.OuterXml); 

ds.ReadXml(sr); 
0

अतिरिक्त लाइन XmlTextReader xtr = ... का उपयोग करना बेहतर है और ReadXml विधि में xtr पास करें।

DataSet ds = new DataSet(); 
StringReader sr = new StringReader(strXml); // or xdoc.InnerXml 
XmlTextReader xtr = new XmlTextReader(sr); 
ds.ReadXml(xtr); 
संबंधित मुद्दे