HtmlAgilityPack을 사용하여 문자열에 허용 된 태그 목록의 태그 만 포함되어 있는지 확인하십시오.

c# html-agility-pack

문제

cf / 문서 및 유사한 질문 에서 HTML 문자열 찾기 .

HtmlAgilityPack 을 사용하여 특정 태그를 찾는 문자열을 구문 분석하는 예제를 보았습니다.하지만 입력 문자열에 목록의 문자열 만 들어 있는지 확인하려는 경우 List<string> AllowedTags ?

즉, 어떻게 doc.DocumentNode.Descendants 를 반복하여 태그 이름을 식별하고 목록에 있는지 확인합니다.

수락 된 답변

var allowedTags = new List<string> { "html", "head", "body", "div" };

bool containsOnlyAllowedTags =
         doc.DocumentNode
            .Descendants()
            .Where(n => n.NodeType == HtmlNodeType.Element)
            .All(n => allowedTags.Contains(n.Name));

인기 답변

List<string> AllowedTags = new List<string>() { "br", "a" };
HtmlDocument goodDoc = new HtmlDocument();
goodDoc.LoadHtml("<a href='asdf'>asdf</a><br /><a href='qwer'>qwer</a>");
bool containsBadTags = goodDoc.DocumentNode .Descendants()
                                            .Where(node => node.NodeType == HtmlNodeType.Element)
                                            .Select(node => node.Name)
                                            .Except(AllowedTags)
                                            .Any();
HtmlDocument badDoc = new HtmlDocument();
badDoc.LoadHtml("<a href='asdf'><b>asdf</b></a><br /><a href='qwer'>qwer</a>");
containsBadTags = badDoc.DocumentNode   .Descendants()
                                        .Where(node => node.NodeType == HtmlNodeType.Element)
                                        .Select(node => node.Name)
                                        .Except(AllowedTags)
                                        .Any();



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