此XML文件每3秒钟一次更新..
<?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代码并提取以下数据..是否可能?我该怎么办?
我只需要这个字段..
如果每个字段的值超过某个读数,请执行(发送) 我已经感觉到了感觉......
感谢您的帮助..
答案 0 :(得分:1)
Eric为检测文件更改提供了一个很好的解决方案,另一种在阅读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数据提取方式。
答案 1 :(得分:0)
我会使用File Watcher来接收文件已更新的通知,然后根据this SO question对其进行处理。