gpt4 book ai didi

C# 读取和写入特定的 CSS 类

转载 作者:行者123 更新时间:2023-11-28 11:32:26 24 4
gpt4 key购买 nike

我正在尝试编写一个 C# 应用程序,它将对某些 CSS 文件执行操作。假设您有以下 CSS 代码:

.ClassOne
{
color: #FFFFFF;
font-weight:normal;
font-size: 9pt;
font-family: Tahoma;
vertical-align: middle;
border: solid 1px #7F7F7F;
padding: 1px 1px 1px 1px;
background-color: #B48410;
background-position: center center;
}

.ClassTwo
{
color: #FFFFFF;
background-repeat: repeat-x;
background-color: #000000;
}

.ClassThree
{
color: #000000;
font-weight:normal;
font-size: 9pt;
font-family: Tahoma;
vertical-align: left;
border: solid 1px #F3Dc51;
padding: 1px 1px 1px 1px;
background-color: #A32DF1;
}

我想做的是在文件中搜索特定类,比如 ClassOne,然后存储适用于该类的背景颜色元素。不必对 CSS 文件中的所有类都这样做,因此在上面的示例中,我可能只想存储 ClassOne 和 ClassThree 的背景颜色。

然后应用程序应该将存储的值复制到另一个具有相同类的 CSS 文件中。

我将知道必须在哪些类上执行这些操作。

我看过 ExCSS,但我不确定如何使用它,以及它在这种情况下是否有用。

有人可以帮忙吗?

最佳答案

这应该让您开始使用 ExCss,至少在解析部分:

    [Test]
public void Banana([Values (".ClassThree")] string targetClass, [Values ("#A32DF1")] string expectedColor)
{
var parser = new Parser();
var sheet = parser.Parse(sample);
var result = sheet.Rulesets
.Where(s => s.Selector.ToString() == targetClass)
.SelectMany(r => r.Declarations)
.FirstOrDefault(d => d.Name.Equals("background-color", StringComparison.InvariantCultureIgnoreCase))
.Term
.ToString();
Assert.AreEqual(expectedColor, result);
}

您最终要做的可能不是使用 Linq,而是遍历您的 css 并构建一个新的 css,其声明中的值与您的目标相匹配。例如,下面的代码可能效率不高,但可以解决问题:

        var targetClasses = new List<string> { ".ClassOne", ".ClassThree" };
var targetDecls = new List<string> { "background-color" };

var parser = new Parser();
var sheet = parser.Parse(sample);
foreach (var r in sheet.Rulesets)
{
if (targetClasses.Contains(r.Selector.ToString()))
{
Debug.WriteLine(r.Selector.ToString());
Debug.WriteLine("{");
foreach (var d in r.Declarations)
{
if (targetDecls.Contains(d.Name))
{
Debug.WriteLine("\t" + d);
}
}
Debug.WriteLine("}");
}
}

关于C# 读取和写入特定的 CSS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com