Прелесть AngleSharp в том, что вы можете вернуться к любому решению JS - поскольку AngleSharp предоставляет API-интерфейс W3 C DOM (который также используется JS). Все, что вам нужно сделать, это заменить определенный camelCase на PascalCase и использовать стандартные инструменты. NET вместо инструментов из JS.
Возьмем, к примеру, Как изменить все ссылки на javascript (извините, это первое попадание в мой поиск в Google) и используйте его в качестве отправной точки.
var context = BrowsingContext.New(Configuration.Default);
var document = await context.OpenAsync(res => res.Content(""));
var anchors = document.GetElementsByTagName("a");
for (var i = 0; i < anchors.Length; i++)
{
var anchor = anchors[i] as IHtmlAnchorElement;
anchor.Href = "http://example.com/?redirect=" + anchor.Href;
}
Таким образом, в нашем случае мы не заинтересованы в таком же преобразовании, а в довольно похожем один. Мы могли бы сделать:
for (var i = 0; i < anchors.Length; i++)
{
var anchor = anchors[i] as IHtmlAnchorElement;
if (anchor.GetAttribute("href")?.StartsWith("#") ?? false)
{
anchor.Href = "your-new-value";
}
}
Причина в том, что Href
всегда нормализован (т.е. полный URL), так что значение атрибута «#foo» может выглядеть как «http://example.com/path#foo». Глядя на значение raw , мы можем просто предположить, что значение по-прежнему начинается с символа ha sh.