トップ回答者
sharepoint上にあるフォームデータを、infopathのVBプログラムで取得する方法について

質問
-
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 のあとに 「(」 が足りないような…
saruhiko2009年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