2017-11-25 190 views
1

我有一些Visual Basic代碼:VB到C#字符串翻譯

 Dim jsScript As String = <js><![CDATA[ 
document.all("q").value = "stack overflow"; 
document.all("search_button_homepage").click(); 
          ]]></js>.Value 
    browser.ExecuteScriptAsync(jsScriptB) 

執行字符串,如JavaScript到Cefsharp瀏覽器。所以我想翻譯成C#這一點,我這樣做:

string jscriptB = <js><![CDATA[ 
document.all("q").value = "stack overflow"; 
document.all("search_button_homepage").click(); 
          ]]></js>.Value 
browser.ExecuteScriptAsync(jsScriptB) 

我也得到了一大堆錯誤信息,如:

錯誤CS0103名稱「文件」中不存在當前上下文

無效表達術語「<」

有人能解釋發生了什麼,以及如何解決它?我無法想象爲什麼一個簡單的字符串轉換不起作用。感謝您的時間,祝您有美好的一天。

編輯: 所以我現在有:

var test = @"<js>< ![CDATA[ 
    document.all(""q"").value = ""stack overflow""; 
      document.all(""search_button_homepage"").click(); 
          ]]></ js >.Value"; 
browser.ExecuteScriptAsync(test); 

但是,像VB代碼沒有它不執行JavaScript。任何人都可以解釋嗎?

+0

C#不支持XML文本如VB。通過在字符串前添加一個'@':'var script = @「document.all('q')。value = ....」'它支持行(而不是xml)也會中斷(輸入密鑰)。對於雙引號,您需要使用第二個雙引號「@」進行轉義,這裏有一個「」引用「」「 – pinkfloydx33

+0

@ pinkfloydx33您的解決方案擺脫了錯誤消息,但現在JavaScript無法正常工作 – WilkyRL

回答

0

C#沒有VB的XML文本的功能,所以你必須給自己打電話XElement.Parse方法:

string jsScript = System.Xml.Linq.XElement.Parse("<js><![CDATA[ document.all(\"q\").value = \"stack overflow\"; document.all(\"search_button_homepage\").click(); ]]></js>").Value; 
browser.ExecuteScriptAsync(jsScriptB);