Передать всю форму InfoPath в веб-службу (без отправки)

У меня есть форма InfoPath 2010, которая запрашивает веб-службу. Веб-служба ожидает всю форму InfoPath в виде строкового параметра XML. Под строкой XML я подразумеваю строку в формате

<my:myFields xmlns:my=...>
    <my:Name>UserName</my:Name>
    ...
</my:myFields>   

Затем веб-служба обработает строку и вернет результат в форму InfoPath.

Я попытался передать корневой элемент ".", но в конце веб-службы я получаю значения, отформатированные только \r\n и \t. Любая идея о том, как передать теги XML и значения.


person sh_kamalh    schedule 10.05.2011    source источник


Ответы (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;
        }
    }
}
person sh_kamalh    schedule 19.05.2011