2009-03-05 3 views
1

API for the W3C Markup Validator이있는 것으로 나타났습니다..NET 응용 프로그램에서 W3C Markup Validator API를 어떻게 사용할 수 있습니까?

은 내가 이전 물어 봤다 : Is there a .NET library for the W3C Markup Validator API?

Assafanswer :

이 API는 SOAP 기반으로합니다. 을 .net 응용 프로그램에서 사용하려면 웹 참조 번호와 코드 을 추가하면됩니다. 그것은 기본적으로 하나의 방법 API의 로

그래서, 내가 주소 http://validator.w3.org/check에서 "서비스 참조 추가"시도 ... 아주 간단 보인다.

먼저 대화 상자가 표시됩니다 :

다운로드 할 에 대한 서비스 정보를 기다려주십시오 ...

다음

: 을 시도하는 동안

오류가 ... 발생 에서 서비스를 찾으려면 'http://validator.w3.org/check'

Visual Studio Add Service Reference Dialog http://img17.imageshack.us/img17/719/addservicereference.gif

오류 세부 정보 :

HTML 문서는 웹 서비스 검색 정보가 포함되어 있지 않습니다. 메타 데이터에 을 확인할 수없는 참조가 포함되어 있습니다. 'http://validator.w3.org/check' 콘텐츠 유형 text/html; 응답 메시지의 charset = utf-8 이 바인딩 (application/soap + xml; charset = utf-8)의 콘텐츠 유형과 일치하지 않습니다. 사용자 지정 인코더를 사용하는 경우 에 IsContentTypeSupported 메서드 이 올바르게 구현되었는지 확인하십시오. 응답의 첫 번째 1024 바이트이었다 : 서비스가 현재 솔루션에 정의되어

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
<title> 

     Validation Results - W3C Markup Validator</title> 
    <link rel="icon" href="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%02%00%00%00%90%91h6%00%00%00%19IDAT(%91c%BCd%AB%C2%40%0A%60%22I%F5%A8%86Q%0DCJ%03%00%DE%B5%01S%07%88%8FG%00%00%00%00IEND%AEB%60%82" type="image/png" /> 
<link rev="made" href="mailto:[email protected]" /> 
<link rev="start" href="./" title="Home Page" /> 
<style type="text/css" media="all">@import "./style/base.css"; 
     @import "./style/results.css";</style> 
<meta name="keywords" content="HTML, HyperText Markup Language, Validation, 
    W3C Markup Validation Service" /> 
<meta name="description" content="W3C's easy-to-use 
    H 

경우, 솔루션을 구축하고 다시 서비스 참조를 추가하려고합니다.

.NET 응용 프로그램에서 W3C Markup Validator API를 어떻게 사용할 수 있습니까?

답변

2

웹 참조가 작동하려면 .NET에서 로컬 객체를 읽고 작성하기 위해 WSDL 파일을 게시 한 서비스 소유자가 필요하다고 생각합니다. 그런 다음 프로젝트에서 이러한 로컬 객체를 호출하면 SOAP를 사용하여 서비스의 다른 끝에서 Data로 채워집니다.

나는 W3C의 유효성 확인 SOAP을 어딘가에 설명해 놓은 WSDL 파일을 찾고 있었지만, 아직까지는 운이 없다. WSDL 프로토콜을 관리하는 W3C가 주어진다면 그것은 이상 할 것입니다. 당신은 그들이 그것을 사용하기를 정말로 기대할 것입니다!

사람이 알고있는 경우 :

  1. 있는 방법 주시기 바랍니다 그런 다음 W3C Validator의 WSDL 파일은
  2. ...

를 WSDL없이 작동하는 웹 참조를 얻거나 ...하는 나도 알아 ...

W3C는 다운로드 및 빌드하기에 쉬운 사이트 (http://validator.w3.org/docs/api.html#libs)에 C# 라이브러리 링크를 넣었습니다. 그러나 그것은 LINQ를 사용하여 W3C에서 반환 된 SOAP을 기반으로 객체를 만듭니다.이 객체는 내 목적에 조금 무거워 보입니다 ... 다른 어떤 것도없는 경우 유용한 시작점입니다.

1

SOAP 웹 서비스에는 WSDL이 있어야합니다. SOAP API의 W3C 사이트에 대해 언급 한 적이 있지만 API 또는 WSDL의 위치는 분명하지 않습니다. http://www.w3.org/Search/Mail/Public/search?type-index=www-validator&index-type=t&keywords=wsdl&search=Search

행운을 빕니다 : 주위 파고와 빙으로 검색

, 나는 다음을 발견했다. 그들은 웹 서비스가 WSDL의 개념을 얻지 못하는 사람들의 부차적 인 고려 사항이기 때문에 약간 뒤로 거쳤습니다.

2

의 전화를하지만은 SOAP 형식의 응답을 제공 할 수 있습니다.

0

할 수 있습니다 실제로 다운로드 전화에서 나는 빠른 C#을 검증 방법 만든 about page

에서 https://github.com/validator/validator

몇 가지 유용한 노트에서 자신의 사이트에 검사기를 설치 : 그래서 같은 https://validator.w3.org/nu/?doc=http://www.example.com&out=json

을 :

using Newtonsoft.Json; 
using System.Net; 
using System.Net.Http; 

private void ValidateFromW3Org(string url) 
{ 
    HttpClientHandler clientHandler = new HttpClientHandler(); 
    HttpClient client = new HttpClient(clientHandler); 
    client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", 
      "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0"); 

    string validator = string.Format(
     "http://validator.w3.org/nu/?doc={0}&out=json", url); 

    string response = client.GetStringAsync(url).Result; 

    PageValidationResult pageResults = JsonConvert.DeserializeObject< 
     PageValidationResult>(response); 
    IList<ValidationResult> results = pageResults.Messages; 

    foreach(ValidationResult result in results) 
    { 
     Console.WriteLine("{0}:{1} line: {2} - {3}", result.Type, 
      result.SubType, result.LastLine, result.Message); 
    } 
} 

public class ValidationResult 
{ 
    public string Type { get; set; } 
    public string SubType { get; set; } 
    public int LastLine { get; set; } 
    public int FirstColumn { get; set; } 
    public int LastColumn { get; set; } 
    public string Message { get; set; } 
    public string Extract { get; set; } 
    public int HiliteStart { get; set; } 
    public int HiliteLength { get; set; } 
} 

public class PageValidationResult 
{ 
    public string Url { get; set; } 
    public IList<ValidationResult> Messages { get; set; } 
} 

이것은 단지 예제 일뿐입니다. 그런 식으로 HttpClient를 다시 사용하고 싶지는 않을 것입니다. 또한 json 결과를 구문 분석하기 위해 타사 Newtonsoft.Json을 사용합니다.