2012-10-02 2 views
0

웹 응답을받는 코드가 있습니다. 해당 응답을 가져 와서 CSS 클래스 (class = "data")를 사용하여 테이블을 검색하려면 어떻게합니까? 테이블을 얻으면 특정 필드 값을 추출해야합니다. 예를 들어, 아래 샘플 마크 업에서 필드 # 3과 필드 # 5의 값이 필요하므로 "85"와 "1"입니다.웹 응답이 주어지면 추가 처리를 위해 특정 부분을 어떻게 추출합니까?

<table width="570" border="0" cellpadding="1" cellspacing="2" class="data"> 
    <tr> 
    <td width="158"><strong>Field #1:</strong></td> 
    <td width="99">1</td> 
    <td width="119"><strong>Field #2:</strong></td> 
    <td width="176">110</td> 
    </tr> 
    <tr> 
    <td width="158"><strong>Field #3:</strong></td> 
    <td width="99">85</td> 
    <td width="119"><strong>Field #4:</strong></td> 
    <td width="176">-259.34</td> 
    </tr> 
    <tr> 
    <td width="158"><strong>Field #5:</strong></td> 
    <td width="99">1</td> 
    <td width="119"><strong>Field #6:</strong></td> 
    <td width="176">110</td> 
    </tr> 
    <tr> 
    <td width="158"><strong>Field #7:</strong></td> 
    <td width="99">12</td> 
    <td width="119"><strong>Field #8:</strong></td> 
    <td width="176">123.23</td> 
    </tr> 
</table> 
+0

오른쪽에있는 "관련 링크"목록을보십시오. –

답변

2

HTML Agility Packparse HTML을 사용합니다. 가장 간단한 방법으로 베타 버전 (it supports LINQ)을 사용하십시오.

+0

XML을 준수하는지 100 % 확신하지만 대부분의 HTML 페이지 (심지어 xhtml 인 경우)를 XML로 파싱 할 수도 있습니다. – JDB

0

랜돌프 (Randolf)가 시사하는 것처럼 HTML 민첩성 팩을 사용하는 것이 좋습니다.

그러나 HTML 형식을 제어 할 수 있다면 문자열 해석을 수행하여 이후 값을 추출 할 수도 있습니다.

전체 HTML을 문자열로 다운로드하고 "<table"문자열 뒤에 "class = \"data \ ""문자열을 검색하는 것은 거의 사소한 일입니다. 그런 다음 비슷한 문자열 조작을 수행하여 이후 값을 쉽게 추출 할 수 있습니다.

결과 코드가 HTML 민첩성 팩을 사용하여 코드를 읽고 유지 관리하기가 어려울 수는 없지만 외부 종속성을 저장하고 코드가 더 잘 수행 될 수 있기 때문에이 작업을 수행해야한다는 것은 아닙니다.

내가 만든 WP7 앱에서 HTML 애자 팩을 사용하여 일부 HTML을 구문 분석하고 일부 값을 추출하기 시작했습니다. 이것은 잘 작동했지만 꽤 느 렸습니다. 문자열 분석 시스템으로 전환하면 정확한 결과를 반환하는 동안 내 코드를 여러 번 빠르게 처리 할 수 ​​있습니다.

+0

문자열을 어떻게 파싱 하시겠습니까? 정규식? –

+0

그게 달려 있습니다. Regexes는 좋지만 읽기가 어렵습니다. 하위 문자열을 쉽게 추출 할 수 있지만 유지 관리가 까다로울 수 있습니다. 후자는 내 WP7 앱에서 사용하는 옵션입니다. 잘 작동하지만 아무것도 끊지 않도록 많은 단위 테스트가 필요합니다. –

+0

Regexes는 정규 언어로만 작동합니다. HTML은 일반 언어가 아닙니다. –

관련 문제