Как указать часть файла XML, которая будет проанализирована синтаксическим анализатором Java Sax? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть XML-файл для анализа с помощью синтаксического анализатора java.Я хочу, чтобы синтаксический анализатор анализировал только содержимое между начальным и конечным тегом (<Models> и </Models>), а не весь файл.Как указать часть файла XML, которая будет проанализирована с помощью Java Sax Parser?Мой XML-файл выглядит следующим образом:

some tags
<Models>
my content to be parsed 
<LifeLine...
<state condition...
other tags
</LifeLine>
......
</Models>
<Diagrams>
....
<LifeLine..
<state condition...
<State condition..
</LifeLine>
other tags
</Diagrams>

, поэтому я хочу, чтобы Sax Parser анализировал только содержимое между <Models> и </Models>, потому что при разборе значения состояния-условия во всем файле вывод мнезначения состояния состояния в части , что я не хочу их читать.Любая помощь?

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
       if (qName.equals("LifeLine")) {

      currentLifeLine=new Lifeline(attributes.getValue("Name"), StateList,TimeInstList);

       }
       else if (qName.equals("StateCondition")) {
      currentSC=new State(attributes.getValue("Id"), attributes.getValue("Name"));    
       }
       .................
       public void endElement(String uri, String localName, String qName) throws SAXException {

    if (qName.equals("StateCondition")) {   
        currentLifeLine.addStateCondition(currentSC);}...

1 Ответ

0 голосов
/ 24 сентября 2019

Создайте конвейер, в котором выходные данные синтаксического анализатора SAX переходят в XMLFilter, который передает выбранные события на следующий шаг приложения.Ваш XMLFilter устанавливает переключатель при получении начального тега Models и отключает его при получении конечного тега Models;события передаются на следующий шаг в конвейере, только если коммутатор включен.

...