将 xml 从字符串 c# 转换为数据表?
converting xml to a datatable from a string c#?
我正在尝试使用 IMAPX 从附件中获取 xml 字符串,稍后将数据保存到 byte[]。转换后,字符串具有由 \r\n.
表示的换行符
byte[] att = w.FileData;
str = System.Text.Encoding.Default.GetString(att);
字符串似乎有“\r\n”而不是白色space和换行
str = str.Replace("\r\n", " ");
当我尝试使用字符串 reader 读取 Xml 来读取 Xml
StringReader sr = new StringReader("your xml");
DataSet ds = new DataSet();
ds.ReadXml(sr);
程序似乎无法理解这种格式的代码。我尝试在 Xml 中应用换行符,而不是像使用
; 那样在 \r\n 中应用换行符相反,但没有任何成功。 Xml 工作正常并转换为数据表,如果它是从系统上的文件检索的,但我希望能够直接从字符串创建数据表
原版xml:
<?xml version="1.0" standalone="yes"?>
<Data>
<ID>931304</ID>
<Age>26</Age>
</Data>
<Data>
<ID>932160</ID>
<Age>26</Age>
</Data>
<Data />
把byte[] att读成字符串就变成这样了
<?xml version="1.0" standalone="yes"?> \r\n <DocumentElement> \r\n <Data> \r\n <ID>931304</ID> \r\n <Age>26</Age> \r\n </Data> \r\n <Data> \r\n <ID>932160</ID> \r\n <Age>26</Age> \r\n </Data> \r\n <Data /> \r\n </DocumentElement>
ds.ReadXml(sr);
不识别\r\n,即使它被替换为空白space。
DataSet.ReadXml
方法接受 文件名 作为字符串 (Documentation)。您不能将 xml 本身作为字符串传递。您必须将字符串转换为流才能执行此操作。
你必须这样做:
StringReader sr = new StringReader("your xml");
DataSet ds = new DataSet();
ds.ReadXml(sr);
您无法将任何 xml 传输到数据表中,您的 xml 转换错误。
<?xml version="1.0" standalone="yes"?> <-- why "?" this at the start and end.
...<Data /> at the end
要么你删除第一行和最后一行,这是有效的xml,然后它转换成数据表
或
您可以对这种类型的数据使用 linq。
Loading XML String into datatable
或
您可以使用 loadxml
方法,然后像
一样对每个节点进行循环
Finding header value in xml
How to display DataTable XML from WriteXml in a nicely readable format?
已更新
或者您可以为此使用模式。
首先创建一个架构 - (How to convert complex XML to .NET Class?)
然后只需将 xml 解析为模式并转换为数据表。
how to convert xml to DataTable in C#
我已经设法从字符串创建数据table,尽管
无法读取它
StringReader sreader = new StringReader(string);
DataTable.ReadXml(sreader);
诀窍是将您的数据架构提供给 DataTable
Data.ReadXmlSchema("yourschema.xsd");
没有在程序中构造table,然后使用 StringReader() 在 ReadXml() 中提供数据,如上所述;
我正在尝试使用 IMAPX 从附件中获取 xml 字符串,稍后将数据保存到 byte[]。转换后,字符串具有由 \r\n.
表示的换行符byte[] att = w.FileData;
str = System.Text.Encoding.Default.GetString(att);
字符串似乎有“\r\n”而不是白色space和换行
str = str.Replace("\r\n", " ");
当我尝试使用字符串 reader 读取 Xml 来读取 Xml
StringReader sr = new StringReader("your xml");
DataSet ds = new DataSet();
ds.ReadXml(sr);
程序似乎无法理解这种格式的代码。我尝试在 Xml 中应用换行符,而不是像使用 ; 那样在 \r\n 中应用换行符相反,但没有任何成功。 Xml 工作正常并转换为数据表,如果它是从系统上的文件检索的,但我希望能够直接从字符串创建数据表
原版xml:
<?xml version="1.0" standalone="yes"?>
<Data>
<ID>931304</ID>
<Age>26</Age>
</Data>
<Data>
<ID>932160</ID>
<Age>26</Age>
</Data>
<Data />
把byte[] att读成字符串就变成这样了
<?xml version="1.0" standalone="yes"?> \r\n <DocumentElement> \r\n <Data> \r\n <ID>931304</ID> \r\n <Age>26</Age> \r\n </Data> \r\n <Data> \r\n <ID>932160</ID> \r\n <Age>26</Age> \r\n </Data> \r\n <Data /> \r\n </DocumentElement>
ds.ReadXml(sr);
不识别\r\n,即使它被替换为空白space。
DataSet.ReadXml
方法接受 文件名 作为字符串 (Documentation)。您不能将 xml 本身作为字符串传递。您必须将字符串转换为流才能执行此操作。
你必须这样做:
StringReader sr = new StringReader("your xml");
DataSet ds = new DataSet();
ds.ReadXml(sr);
您无法将任何 xml 传输到数据表中,您的 xml 转换错误。
<?xml version="1.0" standalone="yes"?> <-- why "?" this at the start and end.
...<Data /> at the end
要么你删除第一行和最后一行,这是有效的xml,然后它转换成数据表
或
您可以对这种类型的数据使用 linq。
Loading XML String into datatable
或
您可以使用 loadxml
方法,然后像
Finding header value in xml
How to display DataTable XML from WriteXml in a nicely readable format?
已更新 或者您可以为此使用模式。
首先创建一个架构 - (How to convert complex XML to .NET Class?)
然后只需将 xml 解析为模式并转换为数据表。
how to convert xml to DataTable in C#
我已经设法从字符串创建数据table,尽管
无法读取它StringReader sreader = new StringReader(string);
DataTable.ReadXml(sreader);
诀窍是将您的数据架构提供给 DataTable
Data.ReadXmlSchema("yourschema.xsd");
没有在程序中构造table,然后使用 StringReader() 在 ReadXml() 中提供数据,如上所述;