Мне нужно встроить css из таблицы стилей в C #.
Как это работает.
http://www.mailchimp.com/labs/inlinecss.php
CSS прост, только классы, никаких изящных селекторов.
Я собирался использовать регулярное выражение (?
, чтобы удалить правила из CSS, а затем попытаться выполнить простую замену строк, где классы называются, но у некоторых элементов html уже есть тег стиля, поэтому мне придется это учитывать.
Есть ли более простой подход? Или что-то уже написанное на C #?
Я смог придумать простой инлайнер CSS при условии, что ваш html также является допустимым xml. Он использует регулярное выражение для получения всех стилей в вашем элементе
. Затем преобразует селекторы css в выражения xpath и добавляет встроенный стиль к соответствующим элементам перед любым ранее существовавшим встроенным стилем.
Обратите внимание, что CssToXpath реализован не полностью, есть некоторые вещи, которые он просто не может делать ... пока.
CssInliner.cs
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using System.Xml.XPath;
namespace CssInliner
{
public class CssInliner
{
private static Regex _matchStyles = new Regex("\\s*(?(?[^{}]+){(?
Hello, World!