我有很多XML文件,结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<Result>
<ResultDetails>
<SearchFilmResult ItemType="film">
<FilmDetails>
<FilmDetail>
<Film Code="TITANIC"><![CDATA[TITANIC 1997]]></Film>
<Imdb>7.7</Imdb>
<FilmInformation>
<Director><![CDATA[James Cameron]]></Director>
<Actors>
<Actor1><![CDATA[Leonardo DiCaprio]]></Actor1>
<Actor2><![CDATA[Kate Winslet]]></Actor2>
<Actor3><![CDATA[Frances Fisher]]></Actor3>
</Actors>
</FilmInformation>
</FilmDetail>
</FilmDetails>
</SearchFilmResult>
</ResultDetails>
</Result>
我想制作一个Java批处理程序,逐文件解析文件夹中的数据,并导入MySQL
create table films(
film_code VARCHAR(255),
film_name VARCHAR(255),
imdb VARCHAR(50),
directors TEXT,
actors TEXT
);
我发现了一些有用的文章(http://websystique.com/springbatch/spring-batch-read-an-xml-file-and-write-to-mysql-database/),但我无法从文件夹中逐文件解析,也无法获得CDATA的值。有人能指导我怎么做吗?
非常感谢。
这里确实有两个问题:
-
如何处理一个目录中的多个文件-为此,您将包装
StaxEventItemReader
,我假设您将使用MultiResourceItemReader
。此读取器将遍历目录中的所有文件,并将它们传递给子读取器(在本例中为StaxEventItemReader
) - 如何解析CDATA元素-这取决于您使用的解析技术。SpringBatch只是将实际的XML解析工作委托给您的解组器。如果您共享整理器和读取器的配置,我也可以更新这个答案来解决这个问题