Как создать собственный анализатор lxml? - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно создать синтаксический анализатор для формата сообщения, немного отличающегося от обычного XML.Может ли кто-нибудь, кто уже испытал это, дать какое-нибудь руководство?Я не нашел подобного вопроса на stackoverflow.Если он есть, я буду благодарен за ссылку.

Сообщение для разбора выглядит следующим образом:

Я читаю документацию lxml (https://lxml.de/element_classes.html),, но я не понимаю "honk "example.

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

Я ожидаю, что XML-дерево будет выводом, на котором я могу получить root и перебирать дочерние элементы.

1 Ответ

0 голосов
/ 30 апреля 2019

Пример небольшой, чтобы понять, является ли это чрезмерно оптимистичным подходом, но, возможно, вам не нужен специальный анализатор для получения действительного XML.CHILDNODE2= можно удалить и без особых усилий.Использование python вместо bash также не должно быть таким сложным.

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