我想从文件(1,5gb文件)动态解析xml,它看起来像:
<product product_id="x" name="x" sku_number="x">
<category>
<primary>x</primary>
<secondary>y</secondary>
</category>
<URL>
<product>URL__I_WANT_TO_PULLOUT</product>
<productImage>x</productImage>
</URL>
<description>
<short>x</short>
<long>x</long>
</description>
</product>
我使用的是lxml.etree.iterparse
类似于:
我从xml节点获取所有必需的值。我唯一不能拉出的节点是URL>product
(它只是空的)。我认为是同一个标签名造成的。除了iterparse
,还有什么方法可以动态解析xml吗?在
如果我对您的示例运行
etree.iterparse
,它会发现两次'product'
标记:有一个外部的,一个内部的<product>
。external标记有子元素,其text
为空。因此,您需要跳过那些外部的'product'
标记,以便只处理那些没有子元素的标记,例如:如果需要处理top
^{pr2}$product
标记的所有元素,则可以删除主循环中的所有内部product
字段,然后按路径处理所有子元素,例如python's lxml and iterparse method:我知道可能已经很晚了,但对于任何人来说,我使用了以下解决方案:
我的
tag
变量是指向产品的路径,例如//parent/product
。然后可以使用上下文容器对元素执行某些操作。在相关问题 更多 >
编程相关推荐