2013-07-17 45 views
0

我正试图解析一个大的XML文件。脚本无法访问内部标签中的内容

它具有以下结构。

<merchandiser> 
    <header></header> 
    <product> 
    <name></name> 
    <URL> 
     <info> 
     </info> 
     <product> 
     </product> 
    </URL> 
    </product> 

    ............ 

    <product> 
    <name></name> 
    <URL> 
     <info> 
     </info> 
     <product> 
     </product> 

    </URL> 
    </product> 
    </merchandiser> 

我使用python-lxml库中的iter.parse()。

for event , element in etree.iterparse(xmlfile,tag='product'): 

     if element.tag=="product" and event == "end": 
      if element.findall("..")[0].tag=='merchandiser': 
         print element.xpath('./URL/product/text()') 
         print element.xpath('./URL/info/text()') 
     element.clear() 

该脚本打印标签内的文本,但无法打印标签内的文本。

我觉得它是因为相同的标签名称。

请告诉我我做错了什么?

+0

“脚本打印标签内的文本,但无法打印标签内的文本。”?你能编辑你的问题吗? –

回答

1

for循环遍历所有product元素,并调用clear(),删除所有文本和子元素。由于您在外部product元素的end事件上打印,因此在打印之前,将删除内部product元素的文本。

+0

谢谢!有效。 –

+0

@RaviSimon:如果你喜欢它,你为什么不接受这个答案? – refi64

0

这个XPath表达式:./URL/product/text()会发现一个product标签,它是一个URL标签内内的文本,但不是product标签,它是一个product标签,它是一个URL标签内内。

也考虑使用./URL/product/product/text()//product/text()

相关问题