是否可以在 AngleSharp 中获取元素的行号?
Is it possible to get the Line Number of an Element in AngleSharp?
我正在将大型项目中元素的所有内联样式放在一起。我想显示它们所在的行号,类似于下面的示例。
是否可以在 AngleSharp 中获取元素的行号?
foreach (var file in allFiles)
{
string source = File.ReadAllText(file.FullName);
var parser = new HtmlParser();
var doc = parser.ParseDocument(source);
var items = doc.QuerySelectorAll("*[style]");
sb.AppendLine($"{file.Name} - inline styles({items.Count()})");
foreach (var item in items)
{
sb.AppendLine($"\t\tstyle (**{item.LineNumber}**): {item.GetAttribute("style")}");
}
}
是的,这是可能的。
快速示例:
var parser = new HtmlParser(new HtmlParserOptions
{
IsKeepingSourceReferences = true,
});
var document = parser.ParseDocument("<html><head></head><body><a href=\"example.com/?h=4&w=8\">&foo</a></body></html>");
document.QuerySelector("body").SourceReference?.Position.Dump();
输出如下所示:
重要的部分是使用 IsKeepingSourceReferences
选项,因为这将允许您使用 SourceReference
。一些(由解析器/规范插入的)元素可能没有源引用,所以请记住这可能是 null
.
我正在将大型项目中元素的所有内联样式放在一起。我想显示它们所在的行号,类似于下面的示例。
是否可以在 AngleSharp 中获取元素的行号?
foreach (var file in allFiles)
{
string source = File.ReadAllText(file.FullName);
var parser = new HtmlParser();
var doc = parser.ParseDocument(source);
var items = doc.QuerySelectorAll("*[style]");
sb.AppendLine($"{file.Name} - inline styles({items.Count()})");
foreach (var item in items)
{
sb.AppendLine($"\t\tstyle (**{item.LineNumber}**): {item.GetAttribute("style")}");
}
}
是的,这是可能的。
快速示例:
var parser = new HtmlParser(new HtmlParserOptions
{
IsKeepingSourceReferences = true,
});
var document = parser.ParseDocument("<html><head></head><body><a href=\"example.com/?h=4&w=8\">&foo</a></body></html>");
document.QuerySelector("body").SourceReference?.Position.Dump();
输出如下所示:
重要的部分是使用 IsKeepingSourceReferences
选项,因为这将允许您使用 SourceReference
。一些(由解析器/规范插入的)元素可能没有源引用,所以请记住这可能是 null
.