2017-03-07 14 views
0

我使用Bueatiful汤XML解析器我可以让美丽的汤保持属性排序和线压痕

soup = BeautifulSoup(open("/root/sandbox/garbage/example_jmx.jmx"), "xml") 

这样可以使属性上\下情况下,在解析文件。 (仅供参考,使用“lxml”解析器会导致所有属性保存为小写)。

但是我剩下2个其他问题。

  1. 属性的顺序发生了变化。
  2. 线的缩进丢失。所有行靠右对齐

e.g.for#1

<TestPlan enabled="true" guiclass="TestPlanGui" testclass="TestPlan"> 

变成

<TestPlan guiclass="TestPlanGui" testclass="TestPlan" enabled="true"> 

我怎么能保持原有的属性,顺序和行缩进?

回答

1
  1. bs4商店标签的属性dict对象dict是无序对象。
  2. 缩进在bs4中无关紧要,它使用childrenparent来显示标签的关系。

如果你想保留属性的所有缩进和顺序,你应该直接打开文件。

+0

谢谢。 bs4具有很好的解析能力,但缺乏这两个特性使得它无法编辑JMeter的文件并跟踪GIT等工具的变化。从bs4保存,然后从JMeter打开并保存,每一行都会跳跃。 – RaamEE

+1

对于编辑应用程序,通用解析器通常不适用。除了在源代码中维护简单的词汇细节的问题之外,还有如何处理不规范的输入文本的问题 - 您不希望关闭所有语法突出显示,只是因为文档末尾附近有错误, 例如。 –