2010-09-13 79 views
5

我正在使用ReadXML方法將字符串讀入DataSet。當我嘗試它返回路徑錯誤中的無效字符。如果我在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文檔的文件路徑和失敗

如果您只有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); 
相關問題