在Python中解析XML:多个相同的属性
我有一个xml文件:在Python中解析XML:多个相同的属性,python,xml,Python,Xml,我有一个xml文件: <movie title="Enemy Behind"> <type>War, Thriller</type> <type>WW2</type> <format>DVD</format> <year>2003</year> <rating>PG</rating>
<movie title="Enemy Behind">
<type>War, Thriller</type>
<type>WW2</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
但使用此代码只能打印其中一个属性,即“战争,颤栗”。另一个表示“WW2”的属性无法打印
我应该使用for循环吗?我已经尝试过了,但出现了一个错误“'Element'对象不可编辑”。我不知道您正在使用哪个库,但您可以使用以下代码获取XML片段的值: test.xml
<movie title="Enemy Behind">
<type>War, Thriller</type>
<type>WW2</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
建议阅读:
<movie title="Enemy Behind">
<type>War, Thriller</type>
<type>WW2</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
import lxml.etree
# Getting the XML root tag... Movie in our case
root = lxml.etree.parse("test.xml").getroot()
# the method "get" returns the value of the XML attribute informed
# as parameter
print(root.get("title"))
# You can iterate over the children of an XML node
for child in root:
print(child.text) # gets the text value from the children XML nodes
# Or more specifically, for each type, use the method FIND to get
# the XML child node from the current XML node.
node = root.find("name")
if node is not None:
print(node.text)
# ..Or if you expect more than one node, as it is the case for the tag
# "type", you can use FINDALL which returns all direct children from the current XML node.
nodes = root.findall("type")
for node in nodes:
print(node.text)