2016-08-24 53 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。