我将向您展示我的代码,它会更清楚:
@XmlRootElement
FilePollerConf{
ArrayList<Directory> directoriesList = new ArrayList<Directory>();
}
Directory{
ArrayList<Match> matchList = new ArrayList<Match>();
}
Match{
ArrayList<Event> eventsList = new ArrayList<Event>();
}
Event{
ArrayList<IAction> actionsList = new ArrayList<IAction>();
}
IAction{
void send();
}
重点是,当我尝试使用 jaxb 解组时,出现错误:
IAction 是一个接口,JAXB 不能处理接口。
所以我寻找@XmlAdapter 但我没有看到像我这样的用例所以我真的不知道我是否可以使用它?我继续搜索,但如果您有想法,欢迎!事实上,我已经有了我的 xml,我希望 jaxb 生成我(给你 xml):
<?xml version="1.0" encoding="utf-8"?>
<FilePollerConfiguration>
<Directory path="C://Users//jmoreau040612//Desktop//Old">
<Match pattern="*.xml">
<Event name="create">
<FTPSend>
<FTPServer>toto.com</FTPServer>
<FTPPort>21</FTPPort>
<Login>toto</Login>
<Password>titi</Password>
<destinationPath>/root/src</destinationPath>
</FTPSend>
</Event>
</Match>
<Match pattern="*.csv">
<Event name="modify">
<MailSend>
<Name>MailSend</Name>
<SMTPServer>smtp.fr.gric</SMTPServer>
<SMTPPort>25</SMTPPort>
<MailTo>toto@rock.com</MailTo>
<MailFrom>titi@rock.com</MailFrom>
<Subject>tata</Subject>
<Body>blabla</Body>
</MailSend>
</Event>
</Match>
</Directory>
<Directory path="C://Users//jmoreau040612//Desktop//New">
<Match pattern="*.csv">
<Event name="create">
<ServerToServer>
<location>ergrthrhdrth</location>
<destination>ergergeg</destination>
</ServerToServer>
</Event>
</Match>
<Match pattern="*.csv">
<Event name="delete">
<SFTPSend>
<SFTPServer>toto.sgcib.com</SFTPServer>
<SFTPPort>21</SFTPPort>
<Login>toto</Login>
<Password>titi</Password>
<destinationPath>/root/src</destinationPath>
<PrivateKeyFile>C://Desktop/privatekey.prk</PrivateKeyFile>
</SFTPSend>
</Event>
</Match>
</Directory>
</FilePollerConfiguration>
关键是我的结构不会总是一样的,所以我可以使用 jaxb 吗?