Dataset.ReadXML возвращает недопустимые символы в пути.Зачем? - PullRequest
5 голосов
/ 13 сентября 2010

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

Есть ли простой способ исправить это?Разве это не должно быть в состоянии обрабатывать 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>

Ответы [ 4 ]

17 голосов
/ 13 сентября 2010

DataSet.ReadXml (строка) ожидает путь к файлу , а не XML-документ. Таким образом, он пытается проанализировать ваш XML-документ как путь к файлу и не удается

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

StringReader sr = new StringReader(xml);
dataSet.ReadXml(sr);
1 голос
/ 13 сентября 2010

Я думаю, вы можете попытаться использовать 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 голосов
/ 26 января 2017

Лучше использовать дополнительную строку XmlTextReader xtr = ... и передать xtr в метод ReadXml.

DataSet ds = new DataSet();
StringReader sr = new StringReader(strXml); // or xdoc.InnerXml
XmlTextReader xtr = new XmlTextReader(sr);
ds.ReadXml(xtr);
0 голосов
/ 29 апреля 2012

Этот пример кода решит проблему.

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

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

ds.ReadXml(sr);
...