Использование LINQ to XML для запроса атрибутов ширины и высоты для каждого тега <img>в документе XML - PullRequest
0 голосов
/ 23 апреля 2011

Я конвертирую HTML-файлы в XML.Как использовать LINQ to XML для запроса атрибутов ширины и высоты для каждого тега <img> в документе?Независимо от их расположения в документе.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2011
  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 to HTML выглядит многообещающе.

0 голосов
/ 23 апреля 2011

Прежде всего LINQ to XML работает с XML, а документ HTML обычно не соответствует правилам синтаксиса XML. Поэтому, если у вас нет правильно сформированного документа XHTML, LINQ to 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 http://htmlagilitypack.codeplex.com/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...