java sax解析器,如何读取嵌套标记?

z4bn682m  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(388)

我在从xml中的嵌套标记获取数据时遇到问题。我找到的所有教程都只解释没有嵌套元素的简单xml结构。有人能帮我解决问题吗?我需要这棵树的数据:ean;波鲁拉巴齐瓦 lucene 尼卡;伊洛斯克。
这是我要阅读的xml:

  1. <POZYCJA>
  2. <LP>1</LP>
  3. <TOWAR>
  4. <KOD>ACEROLA</KOD>
  5. <NAZWA>F-ACEROLA</NAZWA>
  6. <OPIS/>
  7. <EAN>5903148620817</EAN>
  8. <SWW>10.89.19.0</SWW>
  9. <NUMER_KATALOGOWY>F-ACEROLA</NUMER_KATALOGOWY>
  10. <MPP>0</MPP>
  11. </TOWAR>
  12. <STAWKA_VAT>
  13. <STAWKA>8.00</STAWKA>
  14. <FLAGA>2</FLAGA>
  15. <ZRODLOWA>0.00</ZRODLOWA>
  16. </STAWKA_VAT>
  17. <CENY>
  18. <CENAZCZTEREMAMIEJSCAMI>0</CENAZCZTEREMAMIEJSCAMI>
  19. <POCZATKOWA_WAL_CENNIKA>50.3700</POCZATKOWA_WAL_CENNIKA>
  20. <POCZATKOWA_WAL_DOKUMENTU>50.3700</POCZATKOWA_WAL_DOKUMENTU>
  21. <PO_RABACIE_WAL_CENNIKA>35.2600</PO_RABACIE_WAL_CENNIKA>
  22. <PO_RABACIE_PLN>35.2600</PO_RABACIE_PLN>
  23. <PO_RABACIE_WAL_DOKUMENTU>35.2600</PO_RABACIE_WAL_DOKUMENTU>
  24. </CENY>
  25. <WALUTA>
  26. <SYMBOL>PLN</SYMBOL>
  27. <KURS_L>1.00</KURS_L>
  28. <KURS_M>1</KURS_M>
  29. </WALUTA>
  30. <RABAT>30.00</RABAT>
  31. <WARTOSC_NETTO>211.56</WARTOSC_NETTO>
  32. <WARTOSC_BRUTTO>228.48</WARTOSC_BRUTTO>
  33. <WARTOSC_NETTO_WAL>211.56</WARTOSC_NETTO_WAL>
  34. <WARTOSC_BRUTTO_WAL>228.48</WARTOSC_BRUTTO_WAL>
  35. <ILOSC>6.0000</ILOSC>
  36. <JM>szt</JM>
  37. <JM_CALKOWITE>0.00</JM_CALKOWITE>
  38. <JM_ZLOZONA>
  39. <JMZ>szt</JMZ>
  40. <JM_PRZELICZNIK_L>1.00</JM_PRZELICZNIK_L>
  41. <JM_PRZELICZNIK_M>1</JM_PRZELICZNIK_M>
  42. </JM_ZLOZONA>
  43. </POZYCJA>

这是我的掌门人:

  1. @Override
  2. public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
  3. if (qName.equalsIgnoreCase("POZYCJA")){
  4. pozycjaZfv = new PozycjaZfv();
  5. if (listaPozycjiZfv == null) {
  6. listaPozycjiZfv = new ArrayList<PozycjaZfv>();
  7. }
  8. }
  9. else if (qName.equalsIgnoreCase("EAN")) {
  10. ean = true;
  11. } else if (qName.equalsIgnoreCase("PO_RABACIE_WAL_CENNIKA")) {
  12. cena = true;
  13. } else if (qName.equalsIgnoreCase("ILOSC")) {
  14. ilosc = true;
  15. }
  16. sb = new StringBuilder();
  17. }
  18. @Override
  19. public void endElement(String uri, String localName, String qName) throws SAXException {
  20. if (ean){
  21. pozycjaZfv.setEan(sb.toString());
  22. ean = false;
  23. } else if (cena) {
  24. pozycjaZfv.setCena(sb.toString());
  25. cena = false;
  26. } else if (ilosc) {
  27. pozycjaZfv.setIlosc(sb.toString());
  28. ilosc = false;
  29. }
  30. if (qName.equalsIgnoreCase("POZYCJA")){
  31. listaPozycjiZfv.add(pozycjaZfv);
  32. }
  33. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题