在 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()
function:
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)
我有一个名为 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()
function:
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)