相同的元素标记,但基于XML中的父标记具有不同的含义,并在使用SAX时处理它

时间:2015-07-14 14:35:30

标签: java xml sax

所以我正在尝试解析我从Skyscanner获取的XML文件,但我遇到了一个问题。我正在使用SAX来解析这个东西,因为它对这个大小的文档(大约5000行)更有效。但是,出现了一个问题。下面是我得到的XML的非常简洁的样本。

<BrowseQuotesResponseAPIDto xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Currencies>
    <CurrencyDto>
        <Code>GBP</Code>
        <Symbol>£</Symbol>
        <ThousandsSeparator>,</ThousandsSeparator>
        <DecimalSeparator>.</DecimalSeparator>
        <SymbolOnLeft>true</SymbolOnLeft>
        <SpaceBetweenAmountAndSymbol>false</SpaceBetweenAmountAndSymbol>
        <RoundingCoefficient>0</RoundingCoefficient>
        <DecimalDigits>2</DecimalDigits>
    </CurrencyDto>
</Currencies>
<Quotes>
    <QuoteDto>
        <QuoteId>1</QuoteId>
        <MinPrice>398</MinPrice>
        <Direct>true</Direct>
        <OutboundLeg>
            <CarrierIds>
                <int>1523</int>
            </CarrierIds>
            <OriginId>43141</OriginId>
            <DestinationId>88773</DestinationId>
            <DepartureDate>2015-07-15T00:00:00</DepartureDate>
        </OutboundLeg>
        <InboundLeg>
            <CarrierIds>
                <int>1523</int>
            </CarrierIds>
            <OriginId>88773</OriginId>
            <DestinationId>43141</DestinationId>
            <DepartureDate>2015-07-15T00:00:00</DepartureDate>
        </InboundLeg>
    </QuoteDto>
    <!-- Many more -->
</Quotes>
<Places>
    <PlaceDto>
        <PlaceId>837</PlaceId>
        <Name>United Arab Emirates</Name>
        <Type>Country</Type>
    </PlaceDto>
    <!-- Many more countries -->
    <PlaceDto>
        <PlaceId>40146</PlaceId>
        <IataCode>ADB</IataCode>
        <Name>Izmir</Name>
        <Type>Station</Type>
        <CityName>Izmir</CityName>
        <CityId>IZMI</CityId>
        <CountryName>Turkey</CountryName>
    </PlaceDto>
    <!-- Many more stations -->
    <PlaceDto>
        <PlaceId>3169460</PlaceId>
        <IataCode>LON</IataCode>
        <Name>London</Name>
        <Type>City</Type>
        <CityName>London</CityName>
        <CityId>LOND</CityId>
    </PlaceDto>
    <!--  Many more cities -->
</Places>
<Carriers>
    <CarriersDto>
        <CarrierId>144</CarrierId>
        <Name>Corendon</Name>
    </CarriersDto>
    <!-- Many more carriers -->
</Carriers>

如您所见,<PlaceDto><CarrierDto>都有<Name>标记。因此,当我使用switch case结束名称标记时,我不确定是否应将<Name>的值设置为<Name><CarrierDto>的{​​{1}}值<PlaceDto> ...

由于这来自SkyScanner,我无法自行更改实际标签,并尝试根据位置替换缓存内容中的标签,这似乎是一种非常低效的方式。

有没有解决这个问题的常见做法?

0 个答案:

没有答案