Python XML ElementTree删除所有元素

凯文·帕斯夸瑞拉

我正在编写一个脚本,该脚本应该在子元素与CSV文件中的元素匹配的情况下从XML文件中删除父元素。循环和if语句运行正常,但是,当我添加remove时,它只会删除表中的所有内容,无论是否匹配。我似乎无法弄清楚为什么要这样做。

cs = open('skus.csv', 'rb')
reader = csv.reader(cs)


tree = et.parse('christmas-dog-price.xml')
root = tree.getroot()
xmlns = {'pricebook': '{http://www.demandware.com/xml/impex/pricebook/2006-10-31}'}
price_table = root.find('.//{pricebook}price-table'.format(**xmlns))
product_id = [price_table.get('product-id') for price_table in root]
for sku in reader:
    for product in product_id:
        for price_table in root:
            if sku[0] != product:
                continue
            if sku[0] == product:
                root.remove(price_table)
            tree.write('please-work.xml')
丹尼尔

在您的代码中,您从xml中获取所有产品ID,并将它们与csv文件中的每个ID进行比较。如果有匹配项,则从根目录中删除每个元素。

您的代码与此等效:

for sku in reader:
    for product in product_id:
        if sku[0] == product:
            for price_table in root:
                root.remove(price_table)
tree.write('please-work.xml')

这等效于:

if any(sku[0] in product_id for sku in reader):
    for price_table in root:
        root.remove(price_table)
tree.write('please-work.xml')

您应该只比较csv文件每个ID的当前产品ID:

with open('skus.csv', 'rb') as cs:
    reader = csv.reader(cs)
    product_ids = [sku[0] for sku in reader]

tree = et.parse('christmas-dog-price.xml')
root = tree.getroot()
xmlns = {'pricebook': '{http://www.demandware.com/xml/impex/pricebook/2006-10-31}'}
price_table = root.find('.//{pricebook}price-table'.format(**xmlns))
to_be_removed = [element for element in price_table if price_table.get('product-id') in product_ids]
for element in to_be_removed:
    root.remove(element)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python elementtree - 如何在xml中查找具有特定属性的所有元素

来自分类Dev

如果重复,如何删除xml标签的所有元素[python]

来自分类Dev

Python ElementTree XML修改具有多个值的元素

来自分类Dev

Python通过xml ElementTree添加新元素

来自分类Dev

使用Python按属性查找ElementTree中的所有元素

来自分类Dev

使用ElementTree获取python3中的所有xml属性值

来自分类Dev

使用ElementTree进行Python XML解析:如何查找具有相同名称的元素的值?

来自分类Dev

python xml.etree.ElementTree追加到子元素

来自分类Dev

如何使用Python elementTree提取xml数据中的特定元素

来自分类Dev

使用python ElementTree库添加新的XML元素

来自分类Dev

使用python中的ElementTree删除特定的xml标签

来自分类Dev

Python从XML树中删除重复的元素

来自分类Dev

使用python删除XML中的子元素

来自分类Dev

python XML元素删除错误

来自分类Dev

Python从XML树中删除重复的元素

来自分类Dev

使用 Python 删除 XML 文件中的元素

来自分类Dev

在python中更改特定的附加xml元素会更改所有附加的元素

来自分类Dev

具有多个答案的Python ElementTree XML解析

来自分类Dev

Python-使用ElementTree解析具有重复标签的XML

来自分类Dev

带有ElementTree Amazon API的python xml解析器

来自分类Dev

使用Python ElementTree解析XML

来自分类Dev

Python使用XML Iterparse从大型xml文件中删除元素

来自分类Dev

Python使用XML Iterparse从大型xml文件中删除元素

来自分类Dev

如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

来自分类Dev

如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

解析多个XML,尽管并非所有文件都具有python元素

来自分类Dev

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

来自分类Dev

Python XML元素替换

Related 相关文章

  1. 1

    python elementtree - 如何在xml中查找具有特定属性的所有元素

  2. 2

    如果重复,如何删除xml标签的所有元素[python]

  3. 3

    Python ElementTree XML修改具有多个值的元素

  4. 4

    Python通过xml ElementTree添加新元素

  5. 5

    使用Python按属性查找ElementTree中的所有元素

  6. 6

    使用ElementTree获取python3中的所有xml属性值

  7. 7

    使用ElementTree进行Python XML解析:如何查找具有相同名称的元素的值?

  8. 8

    python xml.etree.ElementTree追加到子元素

  9. 9

    如何使用Python elementTree提取xml数据中的特定元素

  10. 10

    使用python ElementTree库添加新的XML元素

  11. 11

    使用python中的ElementTree删除特定的xml标签

  12. 12

    Python从XML树中删除重复的元素

  13. 13

    使用python删除XML中的子元素

  14. 14

    python XML元素删除错误

  15. 15

    Python从XML树中删除重复的元素

  16. 16

    使用 Python 删除 XML 文件中的元素

  17. 17

    在python中更改特定的附加xml元素会更改所有附加的元素

  18. 18

    具有多个答案的Python ElementTree XML解析

  19. 19

    Python-使用ElementTree解析具有重复标签的XML

  20. 20

    带有ElementTree Amazon API的python xml解析器

  21. 21

    使用Python ElementTree解析XML

  22. 22

    Python使用XML Iterparse从大型xml文件中删除元素

  23. 23

    Python使用XML Iterparse从大型xml文件中删除元素

  24. 24

    如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

  25. 25

    如何使用Python和ElementTree检测<?xml version =“ 1.0” encoding =“ UTF-8”的根xml元素?>

  26. 26

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  27. 27

    解析多个XML,尽管并非所有文件都具有python元素

  28. 28

    如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

  29. 29

    Python XML元素替换

热门标签

归档