htmlNode에서 모든 HTML 주석 태그를 제거하려고합니다. 다음은 C #에서 HtmlNode 선택 코드입니다.
HtmlNode table = doc5.DocumentNode.SelectSingleNode("//div[@id='div12']");
아래의 HtmlNode 의사 마크 업 코드를 반환했습니다.
<table>
<tr>
<td>test</td>
<td>
<!-- <a href='url removed' >Test link Test 2 Comment </a> -->
</td>
</tr>
</table>​
내 문제를 해결하기 위해 정규 표현식을 구성 할 수있었습니다. C # 코드는 다음과 같습니다. 하지만, 단지 내 테스트를 성공적으로 작동하고 문자열로 입력 형식으로. 아래의 C # 코드를 참조하십시오.
string rkr;
rkr = "<!-- <a href='url removed' >Test link Test 2 Comment </a> -->";
rkr = Regex.Replace(rkr, @"(\<!--\s*.*?((--\>)|$))",String.Empty);
결과 = "". 그것은 모든 태그에 대해 실시간 실행에서 원하는 것입니다.
포럼 및 stackoverflow 포럼에서 많은 코드 예제를 보았습니다. 하지만 내가 원하는 것에는 아무 것도 없다. 한 게시물 정말 유용했지만 그것은 PHP를 위해 - 다시는 아무 쓸모가 없었다.
이제 위 Regex.Replace 함수에 입력하면됩니다.
rkr = Regex.Replace(table, @"(\<!--\s*.*?((--\>)|$))",String.Empty);
다음과 같은 오류가 발생합니다.
'System.Text.RegularExpressions.Regex.Replace (string, System.Text.RegularExpressions.MatchEvaluator, int)'에 대한 최상의 오버로드 된 메서드 일치가 잘못된 인수를가집니다.
나 또한 변환하려고 시도했다.
rkr = Regex.Replace(table.ToString(), @"(\<!--\s*.*?((--\>)|$))",String.Empty);
그런 다음 rkr = "HtmlAgilityPack.HtmlNode"반환 값을 얻습니다.
어떤 도움이라도 큰 도움이 될 것입니다.
도와 주셔서 감사합니다. 다음과 같은 기능에서 해결책을 찾았습니다.
다음과 같이 doc5를 채운 후에 함수를 호출했습니다.
HtmlNode table = doc5.DocumentNode.SelectSingleNode("//div[@id='div12']");
RemoveComments(table);
public static void RemoveComments(HtmlNode node)
{
foreach (var n in node.ChildNodes.ToArray())
RemoveComments(n);
if (node.NodeType == HtmlNodeType.Comment)
node.Remove();
}
참고로 다음 게시물에서 답을 찾았습니다. HTMLAgilityPack을 사용하여 HtmlNodeType 인 노드 유형을 선택하는 방법
매우 정확하고 여러 가지 예제 유형을 통해 정확히 내가 한 것입니다.