我在python中编写了一个相当简单的过滤器,使用ElementTree来处理某些xml文件的上下文.它或多或少都有效.
但它重新排序各种标签的属性,我希望它不会那样做.
有没有人知道我可以抛出一个开关使它按指定顺序保持?
我正在使用粒子物理工具,它具有基于xml文件的复杂但奇怪的有限配置系统.在许多方面,设置方式是各种静态数据文件的路径.这些路径硬编码到现有的xml中,并且没有用于根据环境变量设置或更改它们的工具,在我们的本地安装中,它们必须位于不同的位置.
这不是灾难,因为我们使用的组合源和构建控制工具允许我们使用本地副本隐藏某些文件.但是,即使数据字段是静态的,xml也不是,所以我编写了一个用于修复路径的脚本,但是在本地版本和主版本之间的属性重新排列差异比必要时更难阅读.
这是我第一次使用ElementTree旋转(只有我的第五或第六个python项目),所以也许我只是做错了.
为简单起见,代码看起来像这样:
tree = elementtree.ElementTree.parse(inputfile)
i = tree.getiterator()
for e in i:
e.text = filter(e.text)
tree.write(outputfile)
Run Code Online (Sandbox Code Playgroud)
合理还是愚蠢?
相关链接:
有没有办法在使用minidom处理XML时保留属性的原始顺序?
说我有:<color red="255" green="255" blue="233" />
当我用minidom修改它时,属性按字母顺序重新排列为蓝色,绿色和红色.我想保留原始订单.
我通过循环返回的元素处理文件elements = doc.getElementsByTagName('color')
然后我做这样的分配e.attributes["red"].value = "233"
.