Я хотел бы преобразовать
<?xml version="1.0" ?>
<mydoc>
<file>
<colors>
<blue />
<red />
<green />
</colors>
<secret>
<username />
<password />
</secret>
</file>
</mydoc>
в
<?xml version="1.0" ?>
<colors>
<blue />
<red />
</colors>
В простом английском я хотел бы рекурсивно скопировать элемент colors, включая текст, игнорировать остальную часть документа XML и отбросить зеленый элемент.
Существуют решения, работающие с приведенным выше примером, но они потерпят неудачу, если XML немного отличается. Например, добавив элемент nest в элемент color или элемент other , который не входит в иерархию элемента color или текст, находящийся в области действия элемента color (ХОРОШИЙ ТЕКСТ), а другой - вне его области (ПЛОХОЙ ТЕКСТ).
<?xml version="1.0" ?>
<mydoc>
<file>
<colors>
<nest>
<blue />
<red />
<green />
</nest>
GOOD TEXT
</colors>
<secret>
<username />
<password />
</secret>
BAD TEXT
</file>
<other>BAD TEXT TWO</other>
</mydoc>
Меня больше всего интересует решение, которое является общим и не адаптировано к представленным здесь примерам.