tags:

views:

205

answers:

2

This XML file is CONSTANTLY updated every 3 seconds..

  <?xml version="1.0" ?> 
- <MotePacket>
- <ParsedDataElement>
  <Name>amtype</Name> 
  <ConvertedValue>11</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>nodeid</Name> 
  <ConvertedValue>5164</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>parent</Name> 
  <ConvertedValue>0</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>group</Name> 
  <ConvertedValue>125</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>socketid</Name> 
  <ConvertedValue>51</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>board_id</Name> 
  <ConvertedValue>133</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>packet_id</Name> 
  <ConvertedValue>134</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>voltage</Name> 
  <ConvertedValue>2892</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>humid</Name> 
  <ConvertedValue>60</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>humtemp</Name> 
  <ConvertedValue>30</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibW0</Name> 
  <ConvertedValue>46920</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibW1</Name> 
  <ConvertedValue>64792</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibW2</Name> 
  <ConvertedValue>44770</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibW3</Name> 
  <ConvertedValue>47493</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>prtemp</Name> 
  <ConvertedValue>30.203907</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>press</Name> 
  <ConvertedValue>998.057495</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>taosch0</Name> 
  <ConvertedValue>65535</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>taosch1</Name> 
  <ConvertedValue>0</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>accel_x</Name> 
  <ConvertedValue>120.000000</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>accel_y</Name> 
  <ConvertedValue>100.000000</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>taoch0</Name> 
  <ConvertedValue>1840.229980</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB0</Name> 
  <ConvertedValue>72</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB1</Name> 
  <ConvertedValue>183</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB2</Name> 
  <ConvertedValue>24</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB3</Name> 
  <ConvertedValue>253</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB4</Name> 
  <ConvertedValue>226</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB5</Name> 
  <ConvertedValue>174</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB6</Name> 
  <ConvertedValue>133</ConvertedValue> 
  </ParsedDataElement>
- <ParsedDataElement>
  <Name>calibB7</Name> 
  <ConvertedValue>185</ConvertedValue> 
  </ParsedDataElement>
  </MotePacket>

I need a vb code that keeps on reading this file and extract the following data.. Is it possible? How can i do it?

I need this field only..

  • NodeID
  • humid
  • humtemp
  • accel_x
  • accel_y

If value of each field exceed a certain reading, do (sendsms) I've that sensms function already..

Thanks for helping..

A: 

I would use a File Watcher to receive a notification that the file has been updated and then process it based on this SO question.

Eric J.
A: 

Eric gave a good solution for detecting file changes, and another method not mentioned in reading the XML (in the linked question) is:

    Dim ds As New DataSet
 ds.ReadXml("filename.xml")

 For Each row As DataRow In ds.Tables("ParsedDataElement").Rows
  Dim name As String = row("Name")
  If (name = "NodeID") Then
   ' Test row("ConvertedValue")
  ElseIf (name = "humid") Then
   ' Test row("ConvertedValue")
  End If
 Next

Avoid this method if the XML file is large, like in the MB range. Otherwise it's a quick and easy way to extract XML data.

Wez