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

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

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

<POZYCJA>
                <LP>1</LP>
                <TOWAR>
                    <KOD>ACEROLA</KOD>
                    <NAZWA>F-ACEROLA</NAZWA>
                    <OPIS/>
                    <EAN>5903148620817</EAN>
                    <SWW>10.89.19.0</SWW>
                    <NUMER_KATALOGOWY>F-ACEROLA</NUMER_KATALOGOWY>
                    <MPP>0</MPP>
                </TOWAR>
                <STAWKA_VAT>
                    <STAWKA>8.00</STAWKA>
                    <FLAGA>2</FLAGA>
                    <ZRODLOWA>0.00</ZRODLOWA>
                </STAWKA_VAT>
                <CENY>
                    <CENAZCZTEREMAMIEJSCAMI>0</CENAZCZTEREMAMIEJSCAMI>
                    <POCZATKOWA_WAL_CENNIKA>50.3700</POCZATKOWA_WAL_CENNIKA>
                    <POCZATKOWA_WAL_DOKUMENTU>50.3700</POCZATKOWA_WAL_DOKUMENTU>
                    <PO_RABACIE_WAL_CENNIKA>35.2600</PO_RABACIE_WAL_CENNIKA>
                    <PO_RABACIE_PLN>35.2600</PO_RABACIE_PLN>
                    <PO_RABACIE_WAL_DOKUMENTU>35.2600</PO_RABACIE_WAL_DOKUMENTU>
                </CENY>
                <WALUTA>
                    <SYMBOL>PLN</SYMBOL>
                    <KURS_L>1.00</KURS_L>
                    <KURS_M>1</KURS_M>
                </WALUTA>
                <RABAT>30.00</RABAT>
                <WARTOSC_NETTO>211.56</WARTOSC_NETTO>
                <WARTOSC_BRUTTO>228.48</WARTOSC_BRUTTO>
                <WARTOSC_NETTO_WAL>211.56</WARTOSC_NETTO_WAL>
                <WARTOSC_BRUTTO_WAL>228.48</WARTOSC_BRUTTO_WAL>
                <ILOSC>6.0000</ILOSC>
                <JM>szt</JM>
                <JM_CALKOWITE>0.00</JM_CALKOWITE>
                <JM_ZLOZONA>
                    <JMZ>szt</JMZ>
                    <JM_PRZELICZNIK_L>1.00</JM_PRZELICZNIK_L>
                    <JM_PRZELICZNIK_M>1</JM_PRZELICZNIK_M>
                </JM_ZLOZONA>
            </POZYCJA>

这是我的掌门人:

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    if (qName.equalsIgnoreCase("POZYCJA")){
        pozycjaZfv = new PozycjaZfv();
        if (listaPozycjiZfv == null) {
            listaPozycjiZfv = new ArrayList<PozycjaZfv>();
        }
    }
    else if (qName.equalsIgnoreCase("EAN")) {
        ean = true;
    } else if (qName.equalsIgnoreCase("PO_RABACIE_WAL_CENNIKA")) {
        cena = true;
    } else if (qName.equalsIgnoreCase("ILOSC")) {
        ilosc = true;
    }

    sb = new StringBuilder();
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
    if (ean){
        pozycjaZfv.setEan(sb.toString());
        ean = false;
    } else if (cena) {
        pozycjaZfv.setCena(sb.toString());
        cena = false;
    } else if (ilosc) {
        pozycjaZfv.setIlosc(sb.toString());
        ilosc = false;
    }

    if (qName.equalsIgnoreCase("POZYCJA")){
        listaPozycjiZfv.add(pozycjaZfv);
    }
}

暂无答案!

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

相关问题