보통 형식의 HTML 문서가 있습니다. 그것은 XHTML이 아니므로 유효한 XML이 아닙니다. 시작 태그의 오프셋을 감안할 때,이 태그의 내용을 가져와야합니다. 내부에 여러 개의 중첩 태그가있을 수 있다는 점을 감안하면이 태그의 내용을 가져와야합니다.C에서 div 요소 내용 가져 오기
비표준 라이브러리를 사용하지 않는 최소 C# 코드로이 문제를 해결하는 가장 쉬운 방법은 무엇입니까?
보통 형식의 HTML 문서가 있습니다. 그것은 XHTML이 아니므로 유효한 XML이 아닙니다. 시작 태그의 오프셋을 감안할 때,이 태그의 내용을 가져와야합니다. 내부에 여러 개의 중첩 태그가있을 수 있다는 점을 감안하면이 태그의 내용을 가져와야합니다.C에서 div 요소 내용 가져 오기
비표준 라이브러리를 사용하지 않는 최소 C# 코드로이 문제를 해결하는 가장 쉬운 방법은 무엇입니까?
당신은
public static string StripHTMLTag(string strHTML)
{
return Regex.Replace(strHTML, "<(.|\n)*?>", "");
}
가 외부 태그의 콘텐츠를 전달할 다음과 같은 기능을 사용하여 HTML 콘텐츠를 제거 할 수 있습니다,이 모든 HTML 태그를 제거하고 당신에게 전용 콘텐츠를 제공 할 것입니다.
희망이
참고 : 보안을 위해 정규식을 사용하지 마십시오. 나는 이것이 OP의 질문에 대한 답을 모르겠지만, OP가 질문을 명확하게 해줄 때까지는 이것이 적당 할 것 같다. –
하는 나는 다음과 같은 함수를 작성 결국 도움이됩니다. 제 목적을 위해 일을 끝내는 것 같습니다.
나는 그것이 더러웠다는 것을 알고 있지만 대부분의 웹 페이지의 HTML 코드도 마찬가지입니다. 사람이 주요 결함을 지적 할 수있는 경우
이렇게하십시오 : 당신은 무엇을 사용하는 오프셋
private static readonly Regex rxDivTag = new Regex(
@"<(?<close>/)?div(\s[^>]*?)?(?<selfClose>/)?>",
RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.Singleline);
private const string RXCAP_DIVTAG_CLOSE = "close";
private const string RXCAP_DIVTAG_SELFCLOSE = "selfClose";
private static List<string> GetProductDivs(string pageText, int start)
{
bool success = true;
int curr = start + 1;
for (Match matchNextTag = rxDivTag.Match(pageText, curr) ; depth > 0 ; matchNextTag = rxDivTag.Match(pageText, curr))
{
if (matchNextTag == Match.Empty)
{
success = false;
break;
}
if (matchNextTag.Groups[RXCAP_DIVTAG_CLOSE].Success)
{
if (matchNextTag.Groups[RXCAP_DIVTAG_SELFCLOSE].Success)
{
success = false;
break;
}
--depth;
}
else if (!matchNextTag.Groups[RXCAP_DIVTAG_SELFCLOSE].Success)
{
++depth;
}
curr = matchNextTag.Index + matchNextTag.Length;
}
if (success)
{
return pageText.Substring(start, curr - start);
}
else
{
return null;
}
}
? 계층 구조를 아래로 내려갈 수있는 문자 수 또는 레벨 수는 무엇입니까? – EndangeredMassa
오프셋은 문자 수입니다. 문서는 구문 분석되지 않으므로 태그 및 내부 내용에 대한 정보는 없습니다. – Ghostrider
비표준 의미입니까 : 1. .NET 프레임 워크 자체에 포함되지 않은 것은 원하지 않습니다. 또는 2. 관리되지 않는 코드를 호출하는 라이브러리를 원하지 않습니다. – SamuelWarren