Я написал Сервис, и мне нужен тип возврата как n XML, который я передам клиенту. У меня есть значения в строковом писателе как - <newdataset> <table> <Slno>1</Slno></table><Name>Andrew</Name><table><Slno>2</Slno><name>Trisha</name></table></newdataset>
То, что мне нужно вернуть, - это правильный формат XML от службы к клиенту.
PS - У него должен быть заголовок, похожий на все XML файлы - например: < ?xml version="1.0" standalone="yes"?>
Благодаря,
Nayan
Используйте перегрузку DataTable.WriteXml(XmlWriter)
. Затем при создании 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
если он у вас есть. (По непонятным мне WriteXml(TextWriter)
перегрузка WriteXml(TextWriter)
пропускает декларацию XML.)