2017-08-27 73 views
0

我想知道是否有方法使用免費服務來驗證駐留在磁盤上的HTML 文件。例如,Windows窗體應用程序會使用文件信息調用服務,然後服務執行驗證並將結果發送回客戶端。通過驗證,我的意思是語法檢查。例如,W3C驗證器要求URL以如下方式啓動:https:\ www ....,並且不接受 「file:/// C:/ Users/Owner/...」。是否可以驗證本地磁盤上的HTML文件?

有沒有這樣的服務?

是否有類似的服務(也可以從Windows窗體中調用)來格式化HTML文本?

回答

1

W3C validator除了URL選項還有另外2個。

你可以upload a filedirectly把HTML進行測試。你的服務應該使用其中的一個,然後取回結果並將它們傳遞給WinForms應用程序。

W3C validator除了URL選項還有另外2個。

你可以upload a filedirectly把HTML進行測試。你的服務應該使用其中的一個,然後取回結果並將它們傳遞給WinForms應用程序。

string htmlToCheck = "<!DOCTYPE html><html><head><title>non empty</title></head></html>"; 
HttpClient client = new HttpClient(); 
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"); 
using (var data = new MultipartFormDataContent("------WebKitFormBoundary")) 
{ 
     using (var html = new StringContent(htmlToCheck)) 
     using (var prefill = new StringContent("0")) 
     using (var doctype = new StringContent("inline")) 
     using (var prefill_doctype = new StringContent("html401")) 
     using (var group = new StringContent("0")) 
     { 
      data.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data"); 
      data.Add(html, "fragment"); 
      data.Add(prefill, "prefill"); 
      data.Add(doctype, "doctype"); 
      data.Add(prefill_doctype, "prefill_doctype"); 
      data.Add(group, "group"); 
      var result = await client.PostAsync("https://validator.w3.org/nu/", data); 
      Console.WriteLine(await result.Content.ReadAsStringAsync()); 
     } 
    } 

要獲得實際驗證結果,您需要解析響應HTML。

+0

你是對的。我想知道如果您有關於如何從C#調用服務的想法?我看了文檔,但沒有抓住一件事! – NoChance

+0

@NoChance只需使用必要的數據對W3C服務執行正常的HTTP請求。 –

+0

今天晚些時候我會添加一個例子如何做到這一點 –

相關問題