2012-01-30 38 views
1

假設我有一個像如何解析第二個XML樹在文件

<?xml version="1.0" encoding="utf-8"?> 
<items> 
    <?xml version="1.0" encoding="utf-8"?> 
    <items> 
    <item> 
     <price>1500</price> 
     <info> asfgfdff</info> 
    </item> 
    </items> 

如何解析,這樣分析器選擇最近更新的XML樹一個XML文件?

+1

你是從字面上重複前兩行還是僅僅是複製和粘貼錯誤? – MMM 2012-01-30 10:41:14

+1

我可能會誤解,但我很確定xml文件不能有多個聲明(),除非它們包含在CDATA節中。 – 2012-01-30 10:42:06

+0

是的我從字面上重複它..每當我通過一個網站爬行我把它保存在一個文件。所以,當我嘗試解析它,我得到這個錯誤'lxml.etree.XMLSyntaxError:XML聲明只允許在文檔的開始,第2行第6列 ' – 2012-01-30 10:43:40

回答

0
with open('file','r') as f: 
    newestXml = [] 
    for line in f.readlines(): 
     if re.search('^<\?xml',line): 
      newestXml = [line] 
     else: 
      newestXml.append(line) 

在循環結束時,newestXml將包含從<?xml最後一次出現在文件末尾的所有行。 現在您可以組合這些行並使用xml解析器來解析xml。

注 - 我現在無法檢查此代碼,因此它可能包含小錯誤,但我希望這個想法能幫助您。

+0

不確定 - newestXml將包含'inner'xml文檔以及'outer'文檔的結束標記,例如,)。在XML中使用regexp是一種蠕蟲! – bob 2012-01-30 12:12:48