Как правило, вы должны определить структуру XML-документа, который вы хотите создать первым. Это значительно облегчит написание кода для заполнения указанного документа. Однако, если вы хотите что-то действительно общее для создания XML-документа для любой веб-формы, вот как вы могли бы сделать это:
XmlDocument buildDocument(Control control)
{
var xmlDoc = new XmlDocument();
xmlDoc.AppendChild(xmlDoc.CreateElement("Form"));
buildDocumentRecursive(xmlDoc, control);
return xmlDoc;
}
void buildDocumentRecursive(XmlDocument xmlDoc, Control control)
{
var textCtrl = control as IEditableTextControl;
if (textCtrl != null)
{
var element = xmlDoc.CreateElement(control.ClientID);
element.InnerText = textCtrl.Text;
xmlDoc.DocumentElement.AppendChild(element);
}
// If you want to check for check boxes, radio buttons, etc., add other cases
else
{
foreach (var child in control.Controls)
{
buildDocumentRecursive(xmlDoc, child);
}
}
}
Еще один способ сделать это:
var document = new XDocument(
new XElement(
"Fields",
from field in Request.Form.AllKeys
select new XElement(field, Request.Form[field])));