我有一些客户向我发送带有不正确结构的元素属性的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;
(?<=<\w+\s[^<]*)(?<!\w+=)"(?!\s*/?>|\s+\w+=")
&i=%3cimg+src%3d%22..%2fimgTest.jpg%22+alt%3d%22Something+%22quoted+here%2c+or+here%22%22%3e&r=%27'
进行替换。 - Wiktor Stribiżew(=\s*"[^=">]*)"([^=">]*)"([^=">]*")
,并用$1'$2'$3
进行替换,但这种方法并不是非常可靠 :> - bobble bubble