Html Comment 대체 방법 string.Empty 태그

c# html html-agility-pack

문제

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 인 노드 유형을 선택하는 방법

매우 정확하고 여러 가지 예제 유형을 통해 정확히 내가 한 것입니다.


인기 답변

여기에 답변 :

doc5.DocumentNode.Descendants()
    .Where(n => n.NodeType == HtmlAgilityPack.HtmlNodeType.Comment)
    .ToList()
    .ForEach(n => n.Remove());

참고 : 열거중인 시퀀스를 변경할 수 없으므로 ToList가 필요합니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow