Амир, еще вопрос, прежде чем буду описывать решение custom api для 1цэ в вики.
Есть вот такой список элементов
Код:
@XmlElement(name = "ContractId", namespace = "http://1c.billing.ru/")
protected String contractId;
@XmlElement(name = "ContractTitle", namespace = "http://1c.billing.ru/")
protected String contractTitle;
@XmlElement(name = "ContractComment", namespace = "http://1c.billing.ru/")
protected String contractComment;
@XmlElement(name = "AgentContractCode", namespace = "http://1c.billing.ru/")
protected String agentContractCode;
@XmlElement(name = "SubList", namespace = "http://1c.billing.ru/")
protected String subList;
@XmlElement(name = "Manager", namespace = "http://1c.billing.ru/")
protected String manager;
В ответ я получаю
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<GetAgentListResponse xmlns="http://1c.billing.ru/">
<GetAgentListResult>
<Agent1C>
<ContractId>36</ContractId>
<ContractTitle>101000015</ContractTitle>
<ContractComment>ООО "Рога и копыта"</ContractComment>
<AgentContractCode>111</AgentContractCode>
</Agent1C>
<Agent1C>
<ContractId>37</ContractId>
<ContractTitle>101000016</ContractTitle>
<ContractComment>АО "Вася Пупкин"</ContractComment>
<AgentContractCode>222</AgentContractCode>
<SubList>38,39</SubList>
</Agent1C>
</GetAgentListResult>
</GetAgentListResponse>
</S:Body>
</S:Envelope>
Если какой-то элемент в середине списка не заполнен, он будет представлен в XML но будет пустым (ContractComment во втором Agent1C)
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<GetAgentListResponse xmlns="http://1c.billing.ru/">
<GetAgentListResult>
<Agent1C>
<ContractId>36</ContractId>
<ContractTitle>101000015</ContractTitle>
<ContractComment>ООО "Рога и копыта"</ContractComment>
<AgentContractCode>111</AgentContractCode>
</Agent1C>
<Agent1C>
<ContractId>37</ContractId>
<ContractTitle>101000016</ContractTitle>
<ContractComment/>
<AgentContractCode>222</AgentContractCode>
<SubList>38,39</SubList>
</Agent1C>
</GetAgentListResult>
</GetAgentListResponse>
</S:Body>
</S:Envelope>
Но если этот пустой элемент будет в конце списка - то тогда он вообще не отобразится в XML (сделал пустой SubList во втором)
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<GetAgentListResponse xmlns="http://1c.billing.ru/">
<GetAgentListResult>
<Agent1C>
<ContractId>36</ContractId>
<ContractTitle>101000015</ContractTitle>
<ContractComment>ООО "Рога и копыта"</ContractComment>
<AgentContractCode>111</AgentContractCode>
</Agent1C>
<Agent1C>
<ContractId>37</ContractId>
<ContractTitle>101000016</ContractTitle>
<ContractComment/>
<AgentContractCode>222</AgentContractCode>
</Agent1C>
</GetAgentListResult>
</GetAgentListResponse>
</S:Body>
</S:Envelope>
Можно как-то заставить выводить все элементы даже если они пустые?
Заполняются они следующим скриптом.
Код:
String cid = rs.getString("c.id");
String title = rs.getString("c.title");
String comment = rs.getString("c.comment");
String agentContractCode = rs.getString("cp.val");
String subList = rs.getString("subList");
String manager = rs.getString("mv.title");
Agent1C agent = new Agent1C();
agent.setContractId(cid);
agent.setContractTitle(title);
agent.setContractComment(comment);
agent.setAgentContractCode(agentContractCode);
agent.setSubList(subList);
agent.setManager(manager);
result.getAgents().add(agent);