2016-03-31 16 views
1

Webブラウザコントロールを使用して、ユーザーがデスクトップ(Windowsフォーム)アプリケーションからサーバーにログインできるようにしています。応答が成功した後、サーバーはセキュリティトークンを含むXMLとして応答を送信しますが、Webブラウザーコントロールからこのxmlを読み取ることはできません。ブラウザコントロールはXMLを私が処理できない奇妙なHTMLに変換します。 は、ここに私のコードです: -.NET WebBrowser ControlがXMLサーバーの応答を正しく読み取る方法

var webBrowser = new WebBrowser 
     { 
      Dock = DockStyle.Fill 
     }; 
     webBrowser.DocumentCompleted += webBrowser_DocumentCompleted; 
     webBrowser.Navigate(url); 

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     var browser = sender as WebBrowser; 
     if (browser != null) 
     { 

      HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
      doc.LoadHtml(browser.DocumentText); 
      var appNode = doc.DocumentNode.SelectNodes("//myTag"); 
     } 
    } 

、これは

<MyCustomXml> 
 
<securityToken>RETERET-SDSDSD-DSFSDFS-SDASDAS-ASDASDASDASD</securityToken> 
 
<organizationUrl>http://myOrganization.Com/</organizationUrl> 
 
</MyCustomXml>

+0

この問題のヘルプ – yo2011

+0

より明確にする必要があります。どのような奇妙なHTMLサーバーが返す、何が期待されているXML、なぜブラウザを使用し、直接サーバーを呼び出さない? – Evk

+0

webbrowserを使用して、ユーザーがログインできるようにし、サーバーからXMLレスポンスを取得しますが、Webブラウザのドキュメントを読むとhtmlが表示されます。 – yo2011

答えて

1

は、WebBrowserコントロールはにHTMLページに受け取ったXMLを変換私は、サーバーから受信した、私のXMLでありますユーザーフレンドリーなディスプレイを備えています。あなたはこの表示のソースを見れば、あなたはHTMLとして解釈この文書を見ることができます

screenshot1

は(HTMLの追加に注意してください。私はIEでhttp://www.w3schools.com/xml/note.xmlを訪問した場合、私は、このインタラクティブディスプレイが表示されますタグとインラインCSS):

screenshot2

それはIEがするようHTMLとしてそれを解釈しているので、このコードは、あなたのWebブラウザーから抽出するものであり、それがために文書を見えるようにするWebブラウザーとしての彼の仕事ですユーザー。私はこの機能を無効にする方法はないと思います。

私はあなたが間違った方法で認証システムを実装しようとしていると考えています.WebブラウザーにXMLを表示して抽出しようとするのは悪い考えです。 WebBrowserシステムを本当に使用したいのであれば、サーバーからのプレーンテキストレスポンス(HTTPヘッダContent-Typeを参照)を使用することをお勧めします。この方法でWebBrowserは解釈しません。

次に、適切な書式設定されたXMLドキュメントを扱う場合、HtmlAgilityPackの代わりにXmlDocument apiを使用することをお勧めします。

最後に、あなたと同じ問題について話しているthis threadをご覧ください。

関連する問題