2016-08-24 38 views
0

我有一個很大的XML要處理,我需要提取所有「情況」標籤,如果這些有< _0:roadNumber> A- 52,< _0:roadNumber> AP-9或< _0:roadNumber> A-55值,因爲我不需要其餘的XML。然後用XML減法來構建一個XML文檔。我不需要實現,只是我想知道我該如何處理這個問題,或者哪個API是最受歡迎的,謝謝。Java或Python的方式來從大XML取決於子文本節點的子XML

PD:我finall實現是轉儲XML在數據的基礎上

XML GET:

print("GETTING XML...") 
resp = requests.get('http://infocar.dgt.es/datex2/dgt/SituationPublication/all/content.xml', stream = True) #XML that I need 
if resp.status_code != 200: 
    raise ApiError('GET /tasks/ {}'.format(resp.status_code)) 
print("XML RECIBIDO 200 OK") 
#resp.raw.decode_content = True 
print("GUARDANDO XML") 
with open("DGT_DATEX.xml", "wb") as handle: 
    for data in (resp.iter_content()): 
     handle.write(data) 

dom = parse("DGT_DATEX.xml") 

回答

1

對於真正的大XML文檔,你應該爲流盡其用SAX(不需要立即在內存中存儲完整的文檔),但對於易於找到元素XPath確實有幫助。

對於Python,您在xml.etree.ElementTree中有一些XPath supportxml.sax中的SAX - 但當然也有其他解析器。

對於Java也有SAX實現和XPath。