2

我正在尝试使用逗号分隔的列表 [Action, Adventure, Family] 并为列表中的每个项目在标签内创建一个新标签。

所需的输出:

<genres>
   <genre>Action</genre>
   <genre>Adventure</genre>
   <genre>Family</genre>
</genres>

我现有的无法工作的代码如下:

root = objectify.fromstring(xml)   # genres is an object at this point
.
.
.
for g in self.s.cell(self.r,self.d['Genre']).value.split() :
   root.product.genres.genre = g.rsplit(",")
.
.
.

注意:上述所有 for 循环所做的都是覆盖单个标签并导致以下结果:

<genres>
   <genre>Family</genre>    # last member of the list
</genres>

我也尝试了以下方法,但也没有用:

for g in self.s.cell(self.r,self.d['Genre']).value.split() :
   genre = objectify.fromstring('<genre />')
   genre = g.rstrip(",")
   root.product.genres.append(genre)

提前感谢你的帮助。

4

2 回答 2

0

感谢您的答复。我想出了一种不同的方法:

for g in self.s.cell(self.r,self.d['Genre']).value.split() :
    genre = et.Element("genre")
    genre.text = g.rstrip(",")
    root.product.genres.append(genre)
于 2014-08-12T19:19:32.010 回答
0

对于相同的标签,lxml 会将它们存储在一个列表中。尝试这个:

root = objectify.fromstring(xml)   # genres is an object at this point

n = 0

for g in self.s.cell(self.r,self.d['Genre']).value.split() :
   root.product.genres.genre[n] = g.rsplit(",")
   n += 1
于 2014-08-11T06:52:17.083 回答