如何建立自定义lxml解析器?

时间:2019-04-30 12:55:21

标签: python xml lxml

我需要为消息格式构建一个与常规XML稍有不同的解析器。 可以给已经经历过这件事的人提供一些指导吗?我没有在stackoverflow上找到任何类似的问题。如果有的话,我将不胜感激。

要解析的消息如下:

我阅读了lxml文档(https://lxml.de/element_classes.html),但我不理解“鸣笛”示例。

[MSG]  
  NODE1=Node1content  
  [CHILD1]  
    CHILDNODE1=ChildNode1Content  
  [/CHILD1]  
  [CHILD2]  
    CHILDNODE2=ChildNode2Content  
    [CHILD3]  
      CHILDNODE3=ChildNode3Content  
    [/CHILD3]  
  [/CHILD2]  
[/MSG]  

我希望XML树作为输出,可以在其上获得root并遍历子级。

1 个答案:

答案 0 :(得分:0)

样本很小,不知道这是否是一种过度乐观的方法,但是可能您不需要自定义解析器来获取有效的xml。 CHILDNODE2=也可以轻松删除。使用python代替bash也不难。

cat test.txt | tr '[' '<' | tr ']' '>' | xmllint --xpath '//CHILD2' -
<CHILD2>  
    CHILDNODE2=ChildNode2Content  
    <CHILD3>  
      CHILDNODE3=ChildNode3Content  
    </CHILD3>  
  </CHILD2>