#linq-to-xml
#linq-to-xml
Вопрос:
Я конвертирую HTML-файлы в XML. Как мне использовать LINQ to XML для запроса атрибутов width amp; height для каждого <img>
тега в документе? Независимо от их расположения в документе.
Ответ №1:
Прежде всего LINQ to XML работает с XML, а HTML-документ обычно не следует правилам синтаксиса XML. Таким образом, если у вас нет правильно сформированного документа XHTML, LINQ в XML не помогает обрабатывать ваш HTML-документ.
Если у вас есть правильно сформированный документ XHTML, выполните, например
XDocument doc = XDocument.Load("doc.xhtml");
XNamespace xhtml = "http://www.w3.org/1999/xhtml";
var imagedata = from img in doc.Descendants(xhtml "img")
select new { width = (int)img.Attribute("width"), height = (int)img.Attribute("height") };
Однако предполагается, что любой элемент img в документе имеет как атрибут with, так и атрибут height. В противном случае вы получите исключение. Помогает ли это? Если у вас есть произвольные HTML-документы, которые не могут быть проанализированы как XML, вы можете заглянуть в HTML agility packhttp://htmlagilitypack.codeplex.com / вместо этого.
Ответ №2:
XElement xmlDoc = XElement.Load("doc.xml");
foreach (var descendant in xmlDoc.Descendants("img"))
{
if (descendant.Attribute("width") != null)
System.Diagnostics.Debug.WriteLine(descendant.Attribute("width"));
..........
}
Также LINQ в HTML выглядит многообещающе.