首页 > 解决方案 > 如何读取多级xml?

问题描述

有必要遍历整个 xml 并验证每个“文档”记录的标记。如果标签包含“IINYUL”或“INNFL”,则(进一步不适用于本题)。如何实现最快的xml遍历和标签验证?

文件 XML:

在此处输入链接描述

标签: javaxmlgroovy

解决方案


例如,检索特定文档。

XQuery

<root>
{
    for $x in doc('c:\Users\Yitzhak\Downloads\test_z.xml')/Файл/Документ
    where $x/ИПВклМСП/@ИННФЛ="701718575510" 
    return $x
}
</root>

输出

<root>
  <Документ ИдДок="b6a52b88-cf38-4601-89b2-bbea28d0fd49" ДатаСост="10.03.2021" ДатаВклМСП="01.08.2016" ВидСубМСП="2" КатСубМСП="1" ПризНовМСП="2" СведСоцПред="2">
    <ИПВклМСП ИННФЛ="701718575510">
      <ФИОИП Фамилия="ОВСЕЙКО" Имя="АЛЕКСАНДР" Отчество="НИКОЛАЕВИЧ"/>
    </ИПВклМСП>
    <СведМН КодРегион="70">
      <Регион Тип="Область" Наим="Томская"/>
      <Город Тип="Город" Наим="Томск"/>
    </СведМН>
    <СвОКВЭД>
      <СвОКВЭДОсн КодОКВЭД="47.59.1" НаимОКВЭД="Торговля розничная мебелью в специализированных магазинах" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="31.01" НаимОКВЭД="Производство мебели для офисов и предприятий торговли" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="31.02" НаимОКВЭД="Производство кухонной мебели" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="31.09" НаимОКВЭД="Производство прочей мебели" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="46.46" НаимОКВЭД="Торговля оптовая фармацевтической продукцией" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="46.65" НаимОКВЭД="Торговля оптовая офисной мебелью" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="46.90" НаимОКВЭД="Торговля оптовая неспециализированная" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="47.19" НаимОКВЭД="Торговля розничная прочая в неспециализированных магазинах" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="47.59" НаимОКВЭД="Торговля розничная мебелью, осветительными приборами и прочими бытовыми изделиями в специализированных магазинах" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="47.91.2" НаимОКВЭД="Торговля розничная, осуществляемая непосредственно при помощи информационно-коммуникационной сети Интернет" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="47.91.3" НаимОКВЭД="Торговля розничная через Интернет-аукционы" ВерсОКВЭД="2014"/>
      <СвОКВЭДДоп КодОКВЭД="47.91.4" НаимОКВЭД="Торговля розничная, осуществляемая непосредственно при помощи телевидения, радио, телефона" ВерсОКВЭД="2014"/>
    </СвОКВЭД>
  </Документ>
</root>

推荐阅读