我已经编写了一个服务,并且我需要一个返回类型作为n XML,我将传递给Client。我在字符串编写器中的值为 - <newdataset> <table> <Slno>1</Slno></table><Name>Andrew</Name><table><Slno>2</Slno><name>Trisha</name></table></newdataset>
我需要返回的是从服务到客户端的正确XML格式。
P.S。 - 它应该有一个像所有XML一样的标题 - 像这样:&lt; ?xml version="1.0" standalone="yes"?>
谢谢,
拿烟</ P>
答案 0 :(得分:1)
使用DataTable.WriteXml(XmlWriter)
重载。然后,creating the XmlWriter
时,您可以使用必要的格式选项传递XmlWriterSettings
,包括设置settings.OmitXmlDeclaration = false
(实际上是默认设置)。因此:
public static string ToXml(this DataTable dt)
{
using (var textWriter = new StringWriter())
{
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = " ";
// settings.OmitXmlDeclaration = false; not necessary since this is the default anyway.
using (var xmlWriter = XmlWriter.Create(textWriter, settings))
{
dt.WriteXml(xmlWriter);
return textWriter.ToString();
}
}
}
因此给出了输出:
<?xml version="1.0" encoding="utf-16"?>
<newdataset>
<Name>Andrew</Name>
<table>
<Slno>1</Slno>
</table>
<table>
<Slno>2</Slno>
<name>Trisha</name>
</table>
</newdataset>
如果您有DataSet
,也适用{{1}}。 (由于我不清楚的原因,WriteXml(TextWriter)
重载省略了XML声明。)