private string validate(string xmlString) { HandlerXML xmlHelper = new HandlerXML(xmlString, xsdPath); bool valid = xmlHelper.ValidateXML(); if (!valid) { return("Mensagem Invalida! " + xmlHelper.ValidationMessage); } return("Mensagem Valida!"); }
private void Form1_Load(object sender, EventArgs e) { handler = new HandlerXML(Environment.CurrentDirectory + "/Alerts.xml", Environment.CurrentDirectory + "/Alerts.xsd"); updateLists(); String[] operations = { "between", "equal", "minor", "bigger" }; comboBoxOperator.DataSource = operations; String[] types = { "temperature", "humidity" }; comboBoxCreateType.DataSource = types; mqttClient.Connect(Guid.NewGuid().ToString()); if (!mqttClient.IsConnected) { MessageBox.Show("Error connecting to the message broker..."); return; } mqttClient.Subscribe(topics, qosLevels); mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgPublishReceived; }
private void MqttClient_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { String xmlString = Encoding.UTF8.GetString(e.Message); HandlerXML xmlHelper = new HandlerXML(xmlString, xsdPath); bool valid = xmlHelper.ValidateXML(); if (!valid) { Console.WriteLine("Mensagem Invalida! " + xmlHelper.ValidationMessage); return; } else { this.Invoke((MethodInvoker) delegate() { XmlDocument xml = new XmlDocument(); xml.LoadXml(Encoding.UTF8.GetString(e.Message)); XmlNode node = xml.SelectSingleNode("/reading"); //obtem o root element do xml XmlNodeList elements = xml.SelectNodes("//*[count(*)=0]"); //obtem todos os elementos sem filhos, foreach (XmlNode item in elements) //os elementos sem filhos sao percorridos { for (int i = 0; i < frm.listBox1.Items.Count; i++) //aqui percorro todas os requesitos que o utizador escolheu ter ativo //eu chamo lhe requesitos pois nesta aplicaçao apesar de no final eu verificar e mandar alertas, nesta aplicaçao o utilizador define como quer que //o valor dos sensores que existem sejam, ou seja, se o utilizador quiser uma alerta para quando a temperatura é maior que 5 entao o ele define //um requesito que diz "quero que a temperatura seja menor que 5" { recursividadeXml(frm.listBox1.Items[i].ToString(), node, item, xml);//nesta funçao mando a mensagem do requesito atual, o node do xml, o atual item do xml, e o xml em si } richTextBox1.AppendText($"{item.Name}:{item.InnerText}\n"); } xml.Save(xmlPath); if (xml.InnerXml.Contains("alarms")) { mqttClient.Publish("AlarmsChannel", Encoding.UTF8.GetBytes(xml.InnerXml)); } richTextBox1.AppendText($"\n"); }); } }