Java 使用Spring读取外部XML文件

Java 使用Spring读取外部XML文件,java,xml,spring,Java,Xml,Spring,我希望能够读取将发送给我的复杂XML文件。此XML文件构建在多个XSD模式上。最后,一些数据将存储在数据库中,因此我想从这个XML文件创建一个bean,并将该bean保存到数据库中。 目前,基于文档的数据库不是我的选择 下面可以看到文件的结构。内部标记“command”是我需要提取并保存到bean的所有内容。xml树下有很多级别,因此如何快速、安全地实现这一点?会有很多文件进来 receivedxml.xml <command> <documentCommand>

我希望能够读取将发送给我的复杂XML文件。此XML文件构建在多个XSD模式上。最后,一些数据将存储在数据库中,因此我想从这个XML文件创建一个bean,并将该bean保存到数据库中。 目前,基于文档的数据库不是我的选择

下面可以看到文件的结构。内部标记“command”是我需要提取并保存到bean的所有内容。xml树下有很多级别,因此如何快速、安全地实现这一点?会有很多文件进来

receivedxml.xml

<command>
    <documentCommand>
        <documentCommandHeader type="ADD">
        <!--Some stuff I don't need-->
        </documentCommandHeader>
        <documentCommandOperand>
            <catalogueItemNotification>
                <!--Some stuff I don't need-->
                <catalogueItem>
                    <tradeItem>
                        <tradeItemIdentification>
-->                         <gtin>Some text</gtin>
                        </tradeItemIdentification>
                        <tradeItemInformation>
                            <informationProviderOfTradeItem>
                                <informationProvider>
-->                                 <gln>Some text</gln>
                                </informationProvider>
-->                             <nameOfInformationProvider>Some text</nameOfInformationProvider>
                            </informationProviderOfTradeItem>
                            <targetMarketInformation>
                                <!--Some stuff I don't need-->
                            </targetMarketInformation>
                            <classificationCategoryCode>
                                <!--Some stuff I don't need-->
                            </classificationCategoryCode>
                            <tradeItemDescriptionInformation>
-->                             <brandName>Some Text</brandName>
                                <descriptionShort>
                                    <description>
                                        <language>
                                            <languageISOCode>xx</languageISOCode>
                                        </language>
                                        <shortText></shortText>
                                    </description>
                                </descriptionShort>
                                <functionalName>
                                    <description>
                                        <language>
                                            <languageISOCode>xx</languageISOCode>
                                        </language>
-->                                     <shortText>Some text</shortText>
                                    </description>
                                </functionalName>
-->                             <subBrand>Some Text</subBrand>
                                <isTradeItemAService></isTradeItemAService>
                            </tradeItemDescriptionInformation>
                            <tradingPartnerNeutralTradeItemInformation>
                                <tradeItemSizeDescription>
                                    <descriptiveSize>
                                        <language>
                                            <languageISOCode>xx</languageISOCode>
                                        </language>
-->                                     <shortText>Some Text</shortText>
                                    </descriptiveSize>
                                </tradeItemSizeDescription>
                            </tradingPartnerNeutralTradeItemInformation>
                        </tradeItemInformation>
                        <extension>
-->                         <!--More things I need but it is not present in all incomming files-->
                        </extension>
                    </tradeItem>
                </catalogueItem>
            </catalogueItemNotification>
        </documentCommandOperand>
    </documentCommand>
</command>

-->一些文本
-->一些文本
-->一些文本
-->一些文本
xx
xx
-->一些文本
-->一些文本
xx
-->一些文本
-->                         
正如您看到的,一些标签是相同的,
-标签及其内容标签是相同的,其中一些是我想要的,另一些是我不想要的。 我以前没有这样做过,所以我真的需要一些帮助。
谢谢你的帮助

也许您应该看看jaxb:根据您可能希望使用文档驱动或流式方法的大小。如果您有大文件(或多个文件),您可能希望利用Spring Batch进行处理/读取(特别是如果文件很大,您可能希望使用StAX进行读取和处理)。如果它们很小,只需使用JAXB读取和解组文件,并将对象存储在数据库中。@M.Deinum我有一个类似的问题,对于大文件,您会怎么做?我有一个大约10Mb的xml文件,在本例中,STax比Jaxb好。@M.Deinum这些文件不是很大,但是很多。您可以随时使用xpath提取您需要的内容。