2009-09-24 4 views
0

Этот XML-файл постоянно обновляется каждые 3 секунды ..Использование VB.net извлечения данных из XML

<?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> 

Мне нужен код VB, который держит на чтение этого файла и извлечь следующие данные .. возможно ли это ? Как мне это сделать?

мне нужно только это поле ..

  • NodeID
  • влажно
  • humtemp
  • accel_x
  • accel_y

Если значение каждого поля превышает определенное чтение, do (sentms) У меня есть функция sensms уже ..

Спасибо за помощь ..

ответ

0

Я хотел бы использовать File Watcher, чтобы получить уведомление о том, что файл был обновлен, а затем перерабатывают его на основе this SO question.

1

Эрик дал хорошее решение для обнаружения изменений файлов и другой метод не упоминается в чтении XML (в связанном вопросе) является:

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 

Избегайте этот метод, если файл XML велик, как в диапазон MB. В противном случае это быстрый и простой способ извлечения данных XML.

Смежные вопросы