python - lxml 如何通过标签名称获取元素的子元素?

新手上路,请多包涵

我有一个看起来像这样的 xml 文件:

 <page>
    <title>title1</title>
    <subtitle>subtitle</subtitle>
    <ns>0</ns>
    <id>1</id>
    <text>hello world!@</text>
</page>
<page>
    <title>title2</title>
    <ns>0</ns>
    <id>1</id>
    <text>hello world</text>
</page>

如何获取每个页面的文本?现在我有每个页面的列表。下面的代码将打印第二个页面元素的文本,而不是第一个。有没有办法通过标签名称获取子元素,如 element['text']

 for i in pages:
    print i[3]

原文由 johan dekker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 713
1 个回答

您可以编写如下代码:

 from lxml import html

xml = """<page>
    <title>title1</title>
    <subtitle>subtitle</subtitle>
    <ns>0</ns>
    <id>1</id>
    <text>hello world!@</text>
</page>
<page>
    <title>title2</title>
    <ns>0</ns>
    <id>1</id>
    <text>hello world</text>
</page>"""

root = html.fromstring(xml)
print(root.xpath('//page/text/text()'))

结果将是:

 ['hello world!@', 'hello world']

原文由 Satish Prakash Garg 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题