package org.jnect.demo.m2m.test; import java.io.ByteArrayOutputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.jnect.core.m2m.M2MProtocolConstants; import org.w3c.dom.Document; import org.w3c.dom.Element; public class SendToM2M { public static void main(String[] args) { try { MqttClient client = new MqttClient( M2MProtocolConstants.DEFAULT_HOST, MqttClient.generateClientId()); client.connect(); client.publish(M2MProtocolConstants.SKELETON_TOPIC, createMessage()); client.disconnect(); client.close(); } catch (MqttException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } } private static MqttMessage createMessage() throws TransformerException, ParserConfigurationException { DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); // root elements Document doc = docBuilder.newDocument(); Element header = doc.createElement("header"); doc.appendChild(header); Element frame = doc.createElement("frameNumber"); header.appendChild(frame); DateFormat df = new SimpleDateFormat("HHmmss"); frame.setTextContent(df.format(new Date())); Element skeleton = doc.createElement("skeletonData"); header.appendChild(skeleton); Element joint = doc.createElement("joint"); skeleton.appendChild(joint); Element jointId = doc.createElement("jointId"); jointId.setTextContent("HandLeft"); joint.appendChild(jointId); Element jointX = doc.createElement("positionX"); jointX.setTextContent(Float.toString(11.0f)); joint.appendChild(jointX); Element jointY = doc.createElement("positionY"); jointY.setTextContent(Float.toString(14.0f)); joint.appendChild(jointY); Element jointZ = doc.createElement("positionZ"); jointZ.setTextContent(Float.toString(9.0f)); joint.appendChild(jointZ); // write the content into xml file TransformerFactory transformerFactory = TransformerFactory .newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); ByteArrayOutputStream stream = new ByteArrayOutputStream(); StreamResult result = new StreamResult(stream); // Output to console for testing // StreamResult result = new StreamResult(System.out); transformer.transform(source, result); return new MqttMessage(String.format("SKELETON: %s", stream.toString()) .getBytes()); } }