Проблема с SAX Parser - PullRequest
       11

Проблема с SAX Parser

1 голос
/ 20 июля 2010

У меня есть XML-файл в следующем формате:

<Query>
   <map>
      <value name="val1">1</value>
      <value name="val2">2</value>
   </map>
</Query>
<Quest>
   <map>
      <value name="val1">6</value>
      <value name="val2">8</value>
   </map>
</Quest>

Когда я пишу свой SAX-парсер, я получаю все значения от начала до конца, но мне нужно написать условие, которое будет принимать имя тега, например Query / Quest, и получить только имя и значение для их конкретного.

Я не уверен, как добавить это условие, мне не нужно анализировать остальные теги, когда мое условие выполнено и мой объект проанализирован.

ПРИМЕЧАНИЕ : Я пишу на Java.

Ответы [ 2 ]

2 голосов
/ 20 июля 2010
  • В startElement проверьте имя элемента по заданному имени. Например, если вы ищете «Запрос» и имя «Запрос», установите для некоторого флага значение true.
  • В startElement, если имя элемента равно «value» и флаг имеет значение true, сохраните имя и значение на карте.
  • В endElement, если имя элемента равно "Query", установите флаг в значение false. При желании можно вообще прекратить синтаксический анализ.
0 голосов
/ 20 июля 2010

Если вам нужны данные только для определенного набора элементов, то анализатор на основе DOM, особенно с XPath для получения обязательных полей, может быть проще.

Библиотека xpath: jaxen , которую можно использовать с несколькими доменами, которые я использовал JDOM

...