LXML: получить заголовок / комментарий верхнего уровня - PullRequest
0 голосов
/ 14 января 2019

Желательно, используя библиотеку LXML, есть ли способ получить доступ к комментарию в самом верху структуры XML после его анализа. Я бы хотел избежать разбора простого текста "я".

Это пример, делающий мой интерес к нему очень очевидным, я думаю:)

<?xml version="1.0"?>
<!DOCTYPE pathway SYSTEM "https://www.kegg.jp/kegg/xml/KGML_v0.7.2_.dtd">
<!-- Creation date: Jan 11, 2019 11:48:16 +0900 (GMT+9) -->

Так что я надеюсь на функцию, которая может вернуть комментарий в последней строке. Конечно, я рад любым другим идеям, как с этим справиться.

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать XPath comment(), чтобы получить узел комментария. Чтобы быть более точным, вы можете получить только первый комментарий в узле документа, используя запрос /comment()[1]. Вот отдельный пример:

>>> raw = '''<?xml version="1.0"?>
... <!DOCTYPE pathway SYSTEM "https://www.kegg.jp/kegg/xml/KGML_v0.7.2_.dtd">
... <!-- Creation date: Jan 11, 2019 11:48:16 +0900 (GMT+9) -->
... <root>
... <child>content</child>
... <!-- Comment 2 -->
... </root>
... <!-- Comment 3 -->'''
>>> from lxml import etree as et
>>> root = et.fromstring(raw)
>>> first_comment = root.xpath("/comment()[1]")
>>> print(first_comment)
[<!-- Creation date: Jan 11, 2019 11:48:16 +0900 (GMT+9) -->]
...