Como observado nos comentários, seus dados não são XML bem formado e não está completamente claro qual é a estrutura do seu documento, por exemplo, a julgar pelos seus dados de exemplo, parece que você não tem elementos aninhados - é realmente esse o caso?
Com essa advertência em mente, aqui está um script Python que usa a biblioteca de análise BeautifulSoup4 para fazer o que você quer (ou seja, ele produz os dados de saída desejados para os dados de entrada do exemplo):
#!/usr/bin/env python
# coding: ascii
"""extract.py
Extract everything between two XML tags
in a (possibly poorly formed) XML document."""
from bs4 import BeautifulSoup
import sys
# Set the opening tag name and value
opening_name = "ID"
opening_text = "2"
# Set the closing tag name
closing_name = "dateAccessed"
# Get the XML data from a file and instantiate a BeautifulSoup parser
# We add a root node because the input data is missing a root
with open(sys.argv[1], 'r') as xmlfile:
xmldoc = "<root>" + xmlfile.read() + "</root>"
soup = BeautifulSoup(xmldoc, 'xml')
# Iterate through the elements of the XML data and collect
# all of the elements inbetween the opening and closing tags
elements = []
match = False
for e in soup.find_all():
if match is True:
elements.append(str(e))
if e.name==closing_name:
break
else:
try:
if e.name==opening_name and e.text==opening_text:
match = True
elements.append(str(e))
except AttributeError:
pass
# Output the results on a single line
print("".join(elements))
Você executaria algo assim:
python extract.py data.xml
Para os dados do seu exemplo:
<ID>1</ID><data>asdf</data><data2>asdf</data2><dataX>asdf</dataX><dateAccessed>somedate</dateAccessed><ID>2</ID><data>asdf</data><data2>asdf</data2><dataX>asdf</dataX><dateAccessed>somedate</dateAccessed><ID>3</ID><data>asdf</data><data2>asdf</data2><dataX>asdf</dataX><dateAccessed>somedate</dateAccessed><ID>4</ID><data>asdf</data><data2>asdf</data2><dataX>asdf</dataX><dateAccessed>somedate</dateAccessed>
Produz a seguinte saída:
<ID>2</ID><data>asdf</data><data2>asdf</data2><dataX>asdf</dataX><dateAccessed>somedate</dateAccessed>