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