電子メールの内容を含む XML ファイルを吐き出すアプリケーションがあります。この XML ファイルは別のアプリケーションによって解析され、電子メールが配信されます。アプリケーションが電子メールを送信する部分が検証されます。
実際にメールを送信するメソッドは次のとおりです。
public void sendEmail(List<String> toRecipients, List<String> ccRecipients, List<String> bccRecipients, String subject, String body) {
// code..
}
送信しようとしているテスト メールは、次の XML ファイルから送信されます。
<?xml version="1.0" encoding="utf-8"?>
<email>
<to>
<recipient>user1@somecompany.com</recipient>
<recipient>user2@somecompany.com</recipient>
</to>
<cc>
<recipient>user3@somecompany.com</recipient>
</cc>
<bcc>
<recipient>user5@somecompany.com</recipient>
</bcc>
<subject>test ABC </subject>
<body><h1>test XYZ</h1></body>
</email>
私は XStream ライブラリを使用していますが、私の問題は のリストの解析にあります。私はいくつかの異なるアプローチを試みましたが、立ち往生しています。XML 解析方法は次のとおりです。
private void parseXmlFile(String xmlFilePath) {
XStream xstream = new XStream(new DomDriver());
xstream.alias("email", EmailPojo.class);
xstream.alias("recipient", Recipient.class);
xstream.alias("to", To.class);
xstream.alias("cc", Cc.class);
xstream.alias("bcc", Bcc.class);
xstream.addImplicitCollection(To.class, "to", "to", Recipient.class);
// xstream.addImplicitCollection(To.class, "to");
// xstream.addImplicitCollection(Cc.class, "cc");
// xstream.addImplicitCollection(Bcc.class, "bcc");
EmailPojo emailPojo = new EmailPojo();
StringBuilder sb = new StringBuilder();
try {
// filename is filepath string
BufferedReader br = new BufferedReader(new FileReader(new File(xmlFilePath)));
String line;
while ((line = br.readLine()) != null) {
sb.append(line.trim());
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<EmailPojo> emailPojoList = new ArrayList<EmailPojo>();
try {
emailPojoList = (List<EmailPojo>) xstream.fromXML(sb.toString());
} catch (Exception e) {
emailPojo = null;// TODO: handle exception
}
}
これは簡単なことのように思えますが、私はこれをうまく進めることができません。ここで何が欠けていますか?ここで何が問題なのですか?
前もって感謝します!
編集:例外出力を忘れました:
Exception in thread "main" com.thoughtworks.xstream.InitializationException: No field "to"
暗黙的なコレクション