Дайте этому шанс. Вероятно, самый простой способ сериализации DataTable в XML:
DataTable table = new DataTable();
System.IO.StringWriter writer = new System.IO.StringWriter();
//notice that we're ignoring the schema so we get clean XML back
//you can change the write mode as needed to get your result
table.WriteXml(writer, XmlWriteMode.IgnoreSchema, false);
string dataTableXml = writer.ToString();
Что касается отображения его в читаемом формате, я бы предложил передать XML в преобразователь XSL, который затем можно использовать для анализа XML и манипулирования выводом по мере необходимости.
Применение преобразования XSLT к набору данных
http://msdn.microsoft.com/en-us/library/8fd7xytc%28v=vs.71%29.aspx#Y289
Вот простой пример, который я создал, чтобы объяснить, как вы будете использовать XSL-преобразователь. Я не проверял это, но это должно быть довольно близко:
DataSet ds = new DataSet();
StringBuilder sbXslOutput = new StringBuilder();
using (XmlWriter xslWriter = XmlWriter.Create(sbXslOutput))
{
XslCompiledTransform transformer = new XslCompiledTransform();
transformer.Load("transformer.xsl");
XsltArgumentList args = new XsltArgumentList();
transformer.Transform(new XmlDataDocument(ds), args, xslWriter);
}
string dataSetHtml = sbXslOutput.ToString();
Форматирование XML как HTML с использованием XSLT
Вот пример использования XSLT для преобразования XML в таблицу HTML. Это должно быть довольно легко принять, чтобы вы могли использовать его с сериализованным набором данных.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table border="1">
<tr>
<th>User Login</th>
<th>Matter Number</th>
...
</tr>
<xsl:for-each select="NewDataSet/RecentMatter">
<tr>
<td>
<xsl:value-of select="UserLogin"/>
</td>
<td>
<xsl:value-of select="MatterNumber"/>
</td>
...
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>