gpt4 book ai didi

python - 创建的文件包含 python lxml 的所有结果

转载 作者:行者123 更新时间:2023-12-01 05:40:01 26 4
gpt4 key购买 nike

我目前正在 python 中使用 lxml 进行 XSLT 转换。转换后我必须将内容写入不同的文件。为了更好地理解我的代码如下:

    ##function to create a new file and write the result into the file 
def new_file(a,b):
full_path = 'path of teh folder to create the file'+a
file_new = open(full_path, 'w')
file_new.write(b)


if xmlRoot.xpath('//slide[@nav_lvl_1="x" and @nav_lvl_2="y"]'):

##xpath to get the all the selected nodes of the attributes x and y
slide_list = xmlRoot.xpath('//slide[@nav_lvl_1="x" and @nav_lvl_2="y"]')

##loop against the obtained list of node element
for each_slide in slide_list:
xslRoot = etree.parse('path of xsl_file')
transform = etree.XSLT(xslRoot)
newdom = transform(xmlRoot)
file_name = ('slide'+each_slide.get('page_number')+'.xml')
result = etree.tostring(newdom, pretty_print=True)
print etree.tostring(newdom, pretty_print=True)
new_file(file_name , result)

下面的代码工作得很好,但是,当我调用函数来创建文件并将结果写入其中时,它将整个结果写入文件而不是结果的循环部分。

例如:如果我在 slide_list 中有五个节点元素,则文件 xslRoot 会针对不同的值转换五次。对于每个转换,我必须将结果写入五个不同的文件中。当我运行此代码时,我在创建的所有五个文件中都有所有五个转换结果,其中每个文件只需要一个结果。

我犯了什么错误。无法弄清楚。有什么建议吗?

输入 Xml 为:

- <slide add_info="Merchandising" name="slide8.xml" nav_lvl_1="x" nav_lvl_2="y" page_number="8">
and ....

- <slide add_info="Merchandising" name="slide8.xml" nav_lvl_1="x" nav_lvl_2="y" page_number="9">
and ...

- <slide add_info="Merchandising" name="slide8.xml" nav_lvl_1="x" nav_lvl_2="y" page_number="10">
and ...

- <slide add_info="Merchandising" name="slide8.xml" nav_lvl_1="x" nav_lvl_2="y" page_number="11">

and so on...

最佳答案

我认为问题在于您在循环的每次迭代中将整个文件加载到结果中。对当前迭代的唯一引用是在指定文件名时:

file_name =  ('slide'+each_slide.get('page_number')+'.xml')

除此之外,没有在任何地方引用“each_slide”来获取文档的子集而不是整个文档。

关于python - 创建的文件包含 python lxml 的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com