首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用JavaScript将CSS转换成XML?

如何用JavaScript将CSS转换成XML?
EN

Stack Overflow用户
提问于 2013-05-07 16:12:37
回答 2查看 1.8K关注 0票数 3

我想像这样转换一些CSS:

代码语言:javascript
运行
复制
body {
    margin: 0 auto;
    padding: 10px 0;
}

#content {
    background: #ffffff;
}

转换成如下所示的XML结构:

代码语言:javascript
运行
复制
<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都在一个数组中,并带有它们的属性:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2013-05-11 12:10:52

实际上,你要找的代码很容易找到,但很可能你只是在搜索错误的东西。

我想和你分享我的代码,但它的形式看起来像是最小化的代码,虽然允许我在不最小化的情况下将整个框架塞进顶针中,但对于那些不想与之结婚的人来说,这往往会有点令人困惑。然而,能够用4-5次击键就可以写出20或40个按键,这让它成为一个真正有趣的约会。

我有一段代码,它允许我使用CSS,而不需要麻烦浏览器前缀,因为它在运行中处理那些东西,但是也有像modernizer和其他更特定于CSS的工具执行类似的任务,它们的源代码可能很容易从你需要的解析器中掠夺。

我确实从我的一个较旧的不太紧凑的版本中获得了这一点,这可能会对您有所帮助。正则表达式是将CSS分解为属性和值的一部分,虽然有点陈旧,但仍然有用。

for循环的主体有一些依赖关系,但实际上只是为了让您了解旧的regex是如何使用的。新的代码没有什么不同,但代码变得如此紧凑,几乎不可能从其中提取类似的样本。想想看,这个循环的整个部分都被简化为比这个循环更小的部分。

代码语言:javascript
运行
复制
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);
        }
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-10 11:33:23

我想把它转换成下面的XML会更有意义。

代码语言:javascript
运行
复制
<style>
  <body margin="0 auto" padding="10px 0"/>
  <any id="content" background="#ffffff"/>
</style>

请注意,属性idclass (不在示例中)与其他属性的处理方式不同。请注意新标记名any。最后,请注意嵌套的CSS样式,如

代码语言:javascript
运行
复制
table.a td {border:thin solid black; margin:1px}

自然地转换为子节点。

代码语言:javascript
运行
复制
<table class="a">
  <td border="thin solid black" margin="1px"/>
</table>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16414277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档