XMLReader будет просто переходить от узла к узлу, и к тому времени, когда вы нажмете «продукт», оба ваших оператора if будут оценены как истинные.
Единственный способ узнать, в каком узле продукта вы находитесь, если вы сохраните информацию о его родителе.
Выполнение этого с одним большим l oop будет проблемой. Вероятно, лучше запустить новую функцию после открытия уровня 1 product
и создать новый l oop для анализа поддерева 'product'.
Я написал библиотеку для Помогите с этим.
XMLReader (и expat) может быть отличным инструментом для быстрого анализа больших XML документов, но вам нужно изучить алгоритмы, как эффективно обходить вложенные структуры. Если вы обнаружите, что это слишком сложно для обработки asp, я бы порекомендовал более простой парсер XML, такой как DOM, или Simple XML.