내 클라이언트가 일부 요소 특성을 가진 html 문자열을 나에게 제대로 전송하지 못하는 경우가 있습니다. 이렇게 :
<img src="../imgTest.jpg" alt="Something "quoted here, or here"">
이러한 사례를 다음과 같이 동적으로 변경하려면 어떻게해야합니까?
<img src="../imgTest.jpg" alt="Something 'quoted here, or here'">
이 html은 브라우저에 표시하지 말고 일부 작업을 수행해야합니다.
htmlAgilityPack을 사용하여 HTML 문제를 제어하고 있지만이 경우 HTML 문자열을 변경하고 원하는 것은 아닙니다.
<img src="../imgTest.jpg" alt="Something" quoted="" here,="" or="" here="">
HtmlAgilityPack을 사용하는 코드 :
var htmlDoc = new HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.LoadHtml(myHtmlStr);
var htmlError = htmlDoc.ParseErrors.SafeAny();
if (!htmlError)
myHtmlStr = htmlDoc.DocumentNode.InnerHtml;
내 생각은 태그 안에 있고 속성 한정자가 아닌 경우 "
일치 "
하는 것입니다.
면책 조항 :이 솔루션은 100 %의 경우에는 작동하지 않을 수 있습니다 (요소 / 속성 이름에 네임 스페이스가 추가 된 경우 적용이 필요합니다). <
바로 뒤에 따옴표가 오면 태그 이름이 속성 값 한정자로 사용됩니다 , <
기호 안에는 <
기호가 없습니다.
용도
(?<=<\w+\b[^<]*)(?<!\w+=)"(?!\s*/?>|\s+\w+=")
및 witha의 교체 '
.
첫 번째 lookbehind는 double quote를 태그로 검색하고, 두 번째 단어가 큰 따옴표 바로 앞에 등호가 올 경우 일치하지 않으며 두 번째 따옴표를 따라 가면 부정적 lookahead가 실패합니다 공백 문자는 닫는 꺽쇠 괄호 (아마 앞에 슬래시가 붙음) 또는 공백 문자 뒤에 등호가 오는 단어가 오는 경우에 사용됩니다.