我正在使用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>
答案 0 :(得分:17)
DataSet.ReadXml(string)期望文件路径不是 xml文档。因此它尝试将您的xml文档解析为文件路径并失败
如果你只有你的XML运行时,那么你可以这样做:
StringReader sr = new StringReader(xml);
dataSet.ReadXml(sr);
答案 1 :(得分: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;
答案 2 :(得分:0)
此示例代码将解决问题。
XmlDocument layoutXml = new XmlDocument();
layoutXml.Load(MyXmlPath); //file location
StringReader sr = new StringReader(layoutXml.DocumentElement.OuterXml);
ds.ReadXml(sr);
答案 3 :(得分: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);