locked
sharepoint上にあるフォームデータを、infopathのVBプログラムで取得する方法について RRS feed

  • 質問

  • sharepointにinfopathで登録した、フォームデータをinfopathのVBプログラミングから参照するにはどうすしたら良いでしょうか。

    sharepoint上のInfopathデータは、http://ServerName/Doclib/data.xml で開けるので、
    アドレスを指定直接すれば開けると思い下記のように行ったのですができませんでした。

    Dim resolver as XmlUrlResolver = new XmlUrlResolver()
    resolver.Credentials = System.Net.CredentialCache.DefaultCredentials
    settings.XmlResolver = resolver
    Dim reader as XmlReader = XmlReader.Creat"http://ServerName/Doclib/data.xml", settings)

    処理は通るのですが、取得したデータがエラーを表示したhtml文となってしまいます。
    エラーは、フォームの読み込みでエラーが起こってダウンロードできなかったと書いてありました

    Sharepoint上のXMLデータは、VBプログラムからどのように取得するのでしょうか?
    環境はSharepoint2007SP2 Infoipath2007です。

    2003互換のXdocumetを用いた方法でなく、xmlDocument、xmlReader、XPathNavigator関係を用いた方法でお願いします。

    よろしくお願いいたします。

    • 編集済み manzimaru 2009年6月29日 13:50
    2009年6月29日 13:48

回答

  • >(「(」はフォーラム掲載の時にわすれました。)

    そうですよね(笑)そうだと思いました。

    >Infopathで開こうとしてしまいエラーが起こっている感じです。
    >それでXMLファイルの文頭にある、infopath用の「?mso」の宣言部分を消した
    >データをフォームライブラリ上に直接アップして、このデータを開いたら問題なくできました。

    なるほど。infopath 固有の宣言が悪さをしていた訳ですね。
    勉強になりました。

    それで、この問題ですが。
    海外のサイトに恐らく同じと思われる質問がありました。

    Get actual XML/Ignore mso-application

    http://social.msdn.microsoft.com/Forums/en-US/sharepointinfopath/thread/92f742f3-c618-456c-9efb-b81bb365ce8d

    この質問に対する回答によると、

    >To get the XML for the form, add the "noredirect" parameter to your
    >request URL, eg. http://server/doclib/myform.xml?noredirect=true

    URLの後ろに noredirect をつければ良いらしいです。
    ぜひお試し下さい。


    saruhiko
    • 回答としてマーク manzimaru 2009年7月5日 12:01
    2009年7月1日 14:27

すべての返信

  • こちらが参考になるかもしれません

    error when load xml file from sharepoint library
    http://www.infopathdev.com/forums/p/4264/16646.aspx#16646

    あと、直接関係ないかもしれませんが、
    XmlReader.Create のあとに 「(」 が足りないような…


    saruhiko
    2009年6月30日 15:45
  • saruhikoさん、ご回答ありがとうございまいた。
    教えていただいたリンク先を参考に行ったのですが、うまくいかず、同じエラーとなってしまいました。
    XmlDocumentでLoadしたあと、Outxmlで表示させるとhtml文が表示されます。
    (「(」はフォーラム掲載の時にわすれました。)

    いろいろと調べてみたのですが、取得されるhtml文なのですが、Sharepointで表示されるエラーが得られます。(例えば、infopath web service用に作成されていないフォームライブラリデータを、WEBフォームで開こうとしたらブラウザに表示されるエラーとかです。わかりにくくてすみません)

    Infopathで開こうとしてしまいエラーが起こっている感じです。
    それでXMLファイルの文頭にある、infopath用の「?mso」の宣言部分を消したデータをフォームライブラリ上に直接アップして、このデータを開いたら問題なくできました。

    「?mso」宣言文を無視して開く、もしくは特定のノードから開くことはできないでしょうか?

    2009年7月1日 14:03
  • >(「(」はフォーラム掲載の時にわすれました。)

    そうですよね(笑)そうだと思いました。

    >Infopathで開こうとしてしまいエラーが起こっている感じです。
    >それでXMLファイルの文頭にある、infopath用の「?mso」の宣言部分を消した
    >データをフォームライブラリ上に直接アップして、このデータを開いたら問題なくできました。

    なるほど。infopath 固有の宣言が悪さをしていた訳ですね。
    勉強になりました。

    それで、この問題ですが。
    海外のサイトに恐らく同じと思われる質問がありました。

    Get actual XML/Ignore mso-application

    http://social.msdn.microsoft.com/Forums/en-US/sharepointinfopath/thread/92f742f3-c618-456c-9efb-b81bb365ce8d

    この質問に対する回答によると、

    >To get the XML for the form, add the "noredirect" parameter to your
    >request URL, eg. http://server/doclib/myform.xml?noredirect=true

    URLの後ろに noredirect をつければ良いらしいです。
    ぜひお試し下さい。


    saruhiko
    • 回答としてマーク manzimaru 2009年7月5日 12:01
    2009年7月1日 14:27
  • saruhikoさん
    再度ご回答ありがとうございました。
    おしえていただきました方法で、XMLデータが取得することができました。
    URLの指定でうまくいくは思いませんでした。

    今度は取得したXMLの扱いに悪戦苦闘していますが、なんとかがんばってみます。


    どうもありがとうございました。
    2009年7月5日 12:09