簡體   English   中英

在python中打印子節點及其xml標記

[英]printing child nodes along with their xml tags in python

我有一個名為m.xml的文件,其內容如下:

<volume name="sp" type="span" operation="create">
    <driver>HDD1</driver>
    <driver>HDD2</driver>
    <driver>HDD3</driver>
    <driver>HDD4</driver>
</volume>

我想得到如下結果:

<driver>HDD1</driver>
<driver>HDD2</driver>
<driver>HDD3</driver>
<driver>HDD4</driver>

我正在嘗試使用以下代碼

import xml.etree.ElementTree as ET
root = ET.parse('m.xml')
for nod in root.findall("./driver"):
    print nod.text

我得到以下結果:

HDD1
HDD2
HDD3
HDD4

如何獲得標簽,而不僅僅是文本值?

要將元素顯示為XML文本,請使用ElementTree.tostring()函數

import xml.etree.ElementTree as ET
root = ET.parse('m.xml')
for nod in root.findall("./driver"):
    print ET.tostring(nod)

演示:

>>> import xml.etree.ElementTree as ET
>>> root = ET.fromstring('''\
... <volume name="sp" type="span" operation="create">
...     <driver>HDD1</driver>
...     <driver>HDD2</driver>
...     <driver>HDD3</driver>
...     <driver>HDD4</driver>
... </volume>
... ''')
>>> for nod in root.findall("./driver"):
...     print ET.tostring(nod)
... 
<driver>HDD1</driver>

<driver>HDD2</driver>

<driver>HDD3</driver>

<driver>HDD4</driver>

使用BeautifulSoup解析XML。 很簡單:

from bs4 import BeautifulSoup as Soup

with open("sample.xml", "r") as f:
    target_xml = f.read()

# create a `Soup` object
soup = Soup(target_xml, "xml")                                                                                                        

# loop through all <driver> returned as a list and prints all 
for d in soup.find_all("driver"):
    print(d)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM