Javascript 当使用xml js时,SVG元素被排序,这会破坏图标

Javascript 当使用xml js时,SVG元素被排序,这会破坏图标,javascript,svg,libxml-js,Javascript,Svg,Libxml Js,我目前正在从sprite中删除未使用的SVG。为了完成我正在使用的任务。 purge svg包用于将文件转换为svg。如下面几行所示 问题是SVG中元素的顺序是有序的,这会破坏图标。 从上面的图像中,左侧的SVG是原始SVG,右侧的SVG是由purge SVG编译的SVG,您可以看到元素被重新排序,将rect和circle带到SVG的底部,打破了图标 <symbol id="icon-card-cash-expenses-v2" viewBox="0

我目前正在从sprite中删除未使用的SVG。为了完成我正在使用的任务。 purge svg包用于将文件转换为svg。如下面几行所示

问题是SVG中元素的顺序是有序的,这会破坏图标。

从上面的图像中,左侧的SVG是原始SVG,右侧的SVG是由
purge SVG
编译的SVG,您可以看到元素被重新排序,将
rect
circle
带到SVG的底部,打破了图标

 <symbol id="icon-card-cash-expenses-v2" viewBox="0 0 48 48">
    <path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z"/>
    <path d="M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20z" fill="currentColor"/>
    <path d="M23.5 32a7.5 7.5 0 100-15 7.5 7.5 0 000 15z" fill="currentColor"/>
    <path d="M21 27.135s1.364.865 3.273.865c1.09 0 2.727-.432 2.727-1.73 0-1.08-.936-1.56-3-2.378l-1.09-.433c-1.092-.432-1.364-1.08-1.364-1.73 0-.78.818-1.729 2.727-1.729 1.309 0 2.363.577 2.727.865" stroke="#fff" stroke-width="1.5" fill="transparent"/>
    <path d="M24 20v-2M24 30v-2" stroke="#fff" stroke-width="1.5"/>
    <rect x="10" y="15" width="28" height="18" rx="1" fill="#fff"/>
    <circle cx="24" cy="24" r="8" fill="currentColor"/>
  </symbol>
基于
xml js
的文档:

注:虽然非紧凑型输出更准确地表示 原始XML版本比压缩版本更详细,非压缩版本更详细 而且会占用更多的空间。此库提供了这两个选项。使用 {compact:false}如果你不确定,因为它保存了一切; 否则,如果您想节省空间而不想节省空间,请使用{compact:true} 注意混合相同名称的元素并失去它们的顺序

根据文档,似乎
compact:true
没有保持原始顺序。但是当我改为compact false时,SVG的编译中断了

    fs.writeFileSync(filename, js2xml(svg, { compact: false, spaces: 2 }))
添加
compact:false
将返回一个空的
icons.pulleted.aa00hgjh.svg
文件。如果我将其更改为
compact:true
,我会得到SVG,但会重新排序,这会破坏图标

 <symbol id="icon-card-cash-expenses-v2" viewBox="0 0 48 48">
    <path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z"/>
    <path d="M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20z" fill="currentColor"/>
    <path d="M23.5 32a7.5 7.5 0 100-15 7.5 7.5 0 000 15z" fill="currentColor"/>
    <path d="M21 27.135s1.364.865 3.273.865c1.09 0 2.727-.432 2.727-1.73 0-1.08-.936-1.56-3-2.378l-1.09-.433c-1.092-.432-1.364-1.08-1.364-1.73 0-.78.818-1.729 2.727-1.729 1.309 0 2.363.577 2.727.865" stroke="#fff" stroke-width="1.5" fill="transparent"/>
    <path d="M24 20v-2M24 30v-2" stroke="#fff" stroke-width="1.5"/>
    <rect x="10" y="15" width="28" height="18" rx="1" fill="#fff"/>
    <circle cx="24" cy="24" r="8" fill="currentColor"/>
  </symbol>
有没有办法防止在
xmljs
中对SVG进行重新排序