【发布时间】:2019-08-08 02:14:21
【问题描述】:
我有一组工作代码来构造一个特定格式的 XML 请求,如下所示。但逻辑只是硬编码示例emaillist.appendChilddocument.createElement 等等。有没有更好的方法来达到同样的结果?也许使用一些存根或自定义 XML 类型的 Java 实体?
public void setXML() throws JAXBException, ParserConfigurationException {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document document = docBuilder.newDocument();
Element emaillist = document.createElement("EMAILLIST");
Element templateID = document.createElement("TemplateID");
templateID.setTextContent("1");
Element campaignID = document.createElement("CampaignID");
campaignID.setTextContent("100");
Element campaignName = document.createElement("CampaignName");
campaignName.setTextContent("Test Campaign Using XML DS");
Element category = document.createElement("Category");
category.setTextContent("Trigger");
Element email = document.createElement("Email");
email.setTextContent("test@test.com");
Element subject = document.createElement("Subject");
subject.setTextContent("Transactional Submissions");
Element senderEmail = document.createElement("SenderEmail");
senderEmail.setTextContent("support@test");
Element emailBody = document.createElement("EmailBody");
Element html = document.createElement("html");
Element head = document.createElement("head");
Element title = document.createElement("title");
title.setTextContent("This is test Title : " + ZonedDateTime.now());
head.appendChild(title);
Element body = document.createElement("body");
html.appendChild(head);
html.appendChild(body);
emailBody.appendChild(html);
emaillist.appendChild(templateID);
emaillist.appendChild(campaignID);
emaillist.appendChild(campaignName);
emaillist.appendChild(category);
emaillist.appendChild(email);
emaillist.appendChild(subject);
emaillist.appendChild(senderEmail);
emaillist.appendChild(emailBody);
System.out.println(emaillist);
}
所需输出示例
<EMAILLIST
xmlns:ns2="TransactionalSubmissionsSvcs"
xmlns="">
<TemplateID>1</TemplateID>
<CampaignID>100</CampaignID>
<CampaignName>Test Campaign Using XML DS</CampaignName>
<Category>Trigger</Category>
<Email>test@test.com.my</Email>
<Subject>Transactional Submissions</Subject>
<SenderEmail>test@test.com.my</SenderEmail>
<EmailBody>
<html>
<head>
<title>This is test Title : 2019-03-17T20:32:43.649+08:00</title>
</head>
<body/>
</html>
</EmailBody>
</EMAILLIST>
【问题讨论】:
-
建议的帖子是根据我所做的。但我正在努力寻找更好的方法来实现这一目标,因为我认为我现在的解决方案很糟糕。
-
正如其他问题中提到的,您可以使用 JAXB,它会自动为您的对象填充值。