HtmlAgilityPack으로 파싱 할 때 무시합니다.

c# html-agility-pack

문제

난 C #에서 html 민첩성 팩을 사용하여 HTML 테이블을 구문 분석 해요 비 - 깨는 공간이 포함되어 있습니다.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

여기서 페이지는 특수 문자   있는 테이블을 포함하는 문자열입니다   텍스트 내에서.

<td>&#160;test</td>
<td>number =&#160;123&#160;</td>

SelectSingleNode(".//td").InnerText 는이 특수 문자를 포함하지만이를 무시하고 싶습니다.

소스 테이블을 수정하지 않고도 이것을 무시할 수있는 우아한 방법이 있습니까?

수락 된 답변

HtmlDecode를 사용할 수 있습니다 .

string foo = HttpUtility.HtmlDecode("Special char: &#160;");

당신에게 문자열을 줄 것입니다 :

특수 문자 :


인기 답변

당신이 말하는 "특수 문자"비 분리 공간은 "멋진 따옴표", em-dash 등과 같이 텍스트에 완벽하게 합법적으로 나타날 수있는 유효한 문자입니다.

종종 우리는 특정 문자를 동등한 것으로 간주하기를 원합니다.

  • 따라서 대담, 대시 및 빼기 기호 / 대시를 동일하게 취급하는 것이 좋습니다.
  • 또는 직선 따옴표와 같은 멋진 따옴표.
  • 또는 비공개 공간을 일반 공간으로 사용합니다.

그러나 이것은 Agility 팩이 도움을 줄 수있는 HTML이 아닙니다. 이를 수행하려면 string.Replace 나 자신의 정규화 함수와 같은 것을 사용해야합니다.

나는 다음과 같이 제안 할 것이다.

static string CleanupStringForMyApp(string s){
    // replace characters with their equivalents
    s = s.Replace(string.FromCharCode(160), " ");
    // Add any more replacements you want to do here
    return s;
}


Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.