Я создаю программу (Visual Studio 2010, .NET 4, консольное приложение на основе С#) для сбора конкретной информации из общедоступного правительственного отчета, который доступен только для загрузки в формате xml. Его структура аналогична следующей:
<Collections>
<Collection>
<Info id="123456" address="Some Place" name="Some Name"/>
<Items>
<Item1/>
<Item2/>
<Item3 I3="Y"/>
<Item3A I3A1="N" I3A2="N" I3A3 = "Y"/>
<Item3B I3B1="N" I3B2="N"/>
<Item4/>
</Items>
</Collection>
<Collection>...</Collection>
<Collection>...</Collection>
</Collections>
Полный файл состоит из сотен блоков и колеблется от 50 до 100 МБ. Я никогда не работал с форматом XML, хотя бы отдаленно похожим на этот (выглядит ужасно, правда?), и у меня было много проблем, пытаясь найти какие-либо примеры полезных запросов.
Мне нужно вернуть идентификатор из элемента для всех узлов, у которых есть «Y» в элементах от Item3 до Item3B. Это сводит меня с ума, потому что было бы проще, если бы у них были совпадающие имена элементов и совпадающие атрибуты, но все они уникальны. Вы не можете включать подстановочный знак в запрос XPath, например /Item3*[Q3*="Y"].
У кого-нибудь есть идеи, как с этим справиться? Спасибо!