我想像这样转换一些CSS:
body {
    margin: 0 auto;
    padding: 10px 0;
}
#content {
    background: #ffffff;
}转换成如下所示的XML结构:
<class name='body'>
<param name='margin'>0</param>
<param name='padding'>10px</param>
</class>
<class name='#content'>
<param name='background'>#ffffff</param>
</class>我想把CSS放在一个textarea中,让它转换成第二个textarea。这个是可能的吗?
我的想法是将代码拆分到一个数组中;每个类或id都在一个数组中,并带有它们的属性:
array [0][0][0] = body
array [0][1][0] = margin
array [0][1][1] = 0
array [0][2][0] = padding
array [0][2][1] = 10px 0
array [1][0][0] = #content
array [1][1][0] = background
array [1][1][1] = #ffffff发布于 2013-05-11 12:10:52
实际上,你要找的代码很容易找到,但很可能你只是在搜索错误的东西。
我想和你分享我的代码,但它的形式看起来像是最小化的代码,虽然允许我在不最小化的情况下将整个框架塞进顶针中,但对于那些不想与之结婚的人来说,这往往会有点令人困惑。然而,能够用4-5次击键就可以写出20或40个按键,这让它成为一个真正有趣的约会。
我有一段代码,它允许我使用CSS,而不需要麻烦浏览器前缀,因为它在运行中处理那些东西,但是也有像modernizer和其他更特定于CSS的工具执行类似的任务,它们的源代码可能很容易从你需要的解析器中掠夺。
我确实从我的一个较旧的不太紧凑的版本中获得了这一点,这可能会对您有所帮助。正则表达式是将CSS分解为属性和值的一部分,虽然有点陈旧,但仍然有用。
for循环的主体有一些依赖关系,但实际上只是为了让您了解旧的regex是如何使用的。新的代码没有什么不同,但代码变得如此紧凑,几乎不可能从其中提取类似的样本。想想看,这个循环的整个部分都被简化为比这个循环更小的部分。
RegExp(/(?:(?:[{;]{1,1})(?:[$]{0,})(?:[\s$\n\t]{0,}){0,})([-a-z]{1,1}[-a-z_0-9]{1,}?)(?=[ \t]{0,}[:])/gim)
for(;(a_prop=rx.rx_props.exec(s_textContent));)
{var    prop_in=(a_prop||[null,null])[1],prop_out=_.vcss$(prop_in,'-');
if(prop_in!=prop_out)
    {s_textContent=s_textContent.substr(0,rx.rx_props.lastIndex-    prop_in.length)+prop_out+s_textContent.substr(rx.rx_props.lastIndex);
        }
}发布于 2018-06-10 11:33:23
我想把它转换成下面的XML会更有意义。
<style>
  <body margin="0 auto" padding="10px 0"/>
  <any id="content" background="#ffffff"/>
</style>请注意,属性id和class (不在示例中)与其他属性的处理方式不同。请注意新标记名any。最后,请注意嵌套的CSS样式,如
table.a td {border:thin solid black; margin:1px}自然地转换为子节点。
<table class="a">
  <td border="thin solid black" margin="1px"/>
</table>https://stackoverflow.com/questions/16414277
复制相似问题