Предполагая, что файл выложен именно так, как в вашем примере, умножено на столько записей, сколько требуется, и что вы хотите максимально сохранить исходный макет, заменив
(<GOBJ>[^<]+?).+?(<item>.+?<\/type>\n).+?(<\/GOBJ>)
с
$1$2$3
глобально, и регулярное выражение настроено для работы в однострочном режиме, будет делать то, что вам нужно, если элемент <GOBJ>
- в верхнем регистре, другие элементы - в нижнем регистре, всегда есть только один экземпляр каждого элемента на запись элемент <item>
всегда появляется непосредственно перед элементом <type>
в каждой записи.
В JavaScript это будет:
var result = src.replace(
/(<GOBJ>[^<]+?).+?(<item>.+?<\/type>\n).+?(<\/GOBJ>)/g,
'$1$2$3'
);
Обратите внимание, что строгие условия облегчают любые проблемы, связанные с синтаксическим анализом XML с использованием регулярного выражения. Если условия не могут быть выполнены, вам будет гораздо лучше использовать специальный инструмент XML, такой как XSLT.