Передать всю форму InfoPath веб-службе (не отправляется)
У меня есть форма InfoPath 2010, которая запрашивает веб-сервис. Веб-служба ожидает всю форму InfoPath в виде строкового параметра XML. Под строкой XML я подразумеваю строку в формате
<my:myFields xmlns:my=...>
<my:Name>UserName</my:Name>
...
</my:myFields>
Затем веб-служба обработает строку и вернет результат в форму InfoPath.
Я попытался передать корневой элемент ".", Но в конце веб-службы я получаю значения только в формате \r\n и \t. Любая идея о том, как передать теги XML и значения.
1 ответ
Решение
Я нашел обходной путь, передав имя списка и имя формы веб-службе. Веб-служба, размещенная в SharePoint, получит XML-форму.
Вот код для справки:
public class InfoPathHelper
{
private string _listName;
private string _fileUrl;
public InfoPathHelper(string listName, string fileName)
{
_listName = listName;
_fileUrl = string.Format("{0}/{1}.xml", listName, fileName);
}
public string GetFormXml()
{
using (SPWeb web = SPContext.Current.Web)
{
SPList lib = web.Lists[_listName];
SPFile file = lib.RootFolder.Files[_fileUrl];
XmlDocument doc = new XmlDocument();
doc.Load(file.OpenBinaryStream());
return doc.OuterXml;
}
}
}