2010-09-13 3 views
5

Я читаю строку в DataSet с использованием метода ReadXML. Когда я пытаюсь, он возвращает недопустимые символы в ошибке пути. если я сохраню и открою строку в IE в виде XML-файла, она выдает ошибку в строке encoding="UTF-16", поэтому я предполагаю, что это является причиной проблемы.Dataset.ReadXML возвращает недопустимые символы в пути. Зачем?

Есть ли простой способ исправить это? Разве он не может обрабатывать unicode или UTF-16?

Любые предложения были бы очень признательны. Использование C# & .Net 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-документ. Так он пытается разобрать ваш XML-документ как FilePath и не

, если у вас есть только ваш XML выполнения, то вы можете сделать так:

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

Я думаю, вы можете попробовать использовать ReadStartElement, чтобы перейти к следующему узлу и прочитать всю таблицу в DataSet.

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 = ... и передать XTR методу ReadXml.

DataSet ds = new DataSet(); 
StringReader sr = new StringReader(strXml); // or xdoc.InnerXml 
XmlTextReader xtr = new XmlTextReader(sr); 
ds.ReadXml(xtr); 
Смежные вопросы