1

Web サービスにクエリを実行する InfoPath 2010 フォームがあります。Web サービスは、InfoPath フォーム全体を XML 文字列パラメーターとして想定しています。XML文字列とは、フォーマット上の文字列を意味します

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

Web サービスは文字列を処理し、結果を InfoPath フォームに返します。

ルート要素「.」を渡そうとしましたが、Web サービス エンドで \r\n と \t だけでフォーマットされた値を受け取ります。XML タグと値を渡す方法についてのアイデア。

4

1 に答える 1

2

リスト名とフォーム名をWebサービスに渡すことで回避策を見つけました。SharePointでホストされているWebサービスは、フォームの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;
        }
    }
}
于 2011-05-19T12:00:17.600 に答える