LabVIEW數據記錄和存儲-XML

XMLeXtensible Markup Language)是一種目前普遍使用的數據傳輸和存儲的格式,其本質上是一種文本文件,可使用任何一個文本編輯工具打開和修改。相似於HTMLXML被設計爲具備自我描述性,也是使用標籤訂義文檔的結構和含義。本文僅僅是介紹LabVIEW中對XML文件的操做方式和支持函數,關於XML語言自己能夠參見相關書籍和文檔,如W3school網站 程序員

在測試測量領域中,XML文件一般被用來傳遞應用程序的配置文件和參數,這與ini文件的做用相似,也有很多的程序員將兩者進行對比。這裏舉個簡單的說明實例,說明對於iniXML如何處理保存 17所示的儀器配置列表。該文件主要存儲各類儀器的參數信息,如name(名稱)、address(地址)、description(描述)。可是文件對各類儀器進行分類,根據儀器功能分爲AC SourceDC Source等。 express

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

17 儀器配置列表實例 瀏覽器

ini文件來講,表述 17所示的結構簡直就是一場「災難」,由於它僅僅是一種兩層的結構體系,沒法準確地表述這種多種的樹形結構。不管怎樣設計sectionkey,始終沒法知足條理清晰、結構簡單和檢索方便的要求。XML因爲其自己的多層次設計特色卻徹底可以勝任此類描述,以下所示。 ide

  <?xml version="1.0" encoding="utf-8" standalone="yes" ?> 函數

- <instruments> 工具

- <ACSource> 測試

- <instrument> 網站

  <name>Instr1</name> spa

  <address>GPIB::1</address> .net

  <description>本儀器用於UUT1供電。</description>

  </instrument>

- <instrument>

  <name>Instr2</name>

  <address>GPIB::2</address>

  <description>本儀器用於UUT2供電。</description>

  </instrument>

  </ACSource>

- <DCSource>

- <instrument>

  <name>Instr3</name>

  <address>GPIB::3</address>

  <description>本儀器用於UUT3供電。</description>

  </instrument>

- <instrument>

  <name>Instr4</name>

  <address>GPIB::4</address>

  <description>本儀器用於UUT4供電。</description>

  </instrument>

  </DCSource>

- <DMM>

- <instrument>

  <name>Instr5</name>

  <address>GPIB::5</address>

  <description>測量1-10#點電壓。</description>

  </instrument>

  </DMM>

- <DAQ>

- <instrument>

  <name>Instr6</name>

  <address>GPIB::6</address>

  <description>監控11-12#電壓。</description>

  </instrument>

  </DAQ>

  </instruments>

在瀏覽器中(IEFirefox等)打開該XML文件,能夠看到其樹形的結構,很是吻合 17所示的要求。當須要擴展儀器或類型時,只要增長相應的元素節點便可。所以,相對ini文件,XML文件在描述比較複雜的文檔結構時具備很是明顯的優點。

LabVIEW提供了兩類處理XML文件的VIs,如 18所示,依次爲LabVIEW SchemaXML Parser。前者是將LabVIEW中產生的相關數據,如waveformstringarraycluster等按照內置的XML SchemaXSD)文件產生符合XML驗證的XML字符串;後者是使用XML DOM對象訪問和解析XML文件。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

18 XML函數選板

19所示爲LabVIEW Schema函數選板中的函數列表,其功能很是清晰明瞭。

(1)     Flatten To XML:將LabVIEW中的數據轉化爲符合XML語言規範的XML字符串。這種轉換是根據預約義的XML Schema文件實現的,默認路徑爲<LabVIEW>\vi.lib\Utility\LVXMLSchema.xsd。目前LabVIEW並不支持自定義的XML Schema,也不支持LabVIEW對某個數據的自定義標記。

(2)     Unflatten From XML:這是與Flatten To XML做用相反的函數,它根據XML SchemaXML字符串轉化爲LabVIEW可識別的數據類型。

(3)     Write to XML File:將XML字符串寫入XML文件中。

(4)     Read From XML File:從XML文件中讀取XML字符串。

(5)     Escape XML:將特殊字符串轉換爲符合XML語法的字符。它能夠將<>&'"轉換爲&lt;&gt;&amp;&apos;&quot;

(6)     Unescape XML:與Escape XML函數的功能相反。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

19 LabVIEW Schema函數選板

20是利用 19所示的函數將LabVIEW中產生的數據轉換爲XML字符串並寫入XML文件中。LabVIEW會自動根據XSD文件將doublestringcluster數據轉換爲XML字符串,而程序員沒法自定義轉換的具體方式和內容。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

20 LabVIEW數據類型轉換爲XML文件

XML文件中的字符串轉換爲LabVIEW中的數據類型,只須要使用LabVIEW Schema中的函數就能夠了,如 21所示。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

21 XML文件轉換爲LabVIEW數據類型

19 ~ 21能夠看出,將LabVIEW中的相關數據轉換爲對應的XML字符串比較簡單。可是在LabVIEW中程序員如何可以解析非LabVIEW生成的XML文檔呢?如何獲取任何一個XML文件中的XML元素和屬性呢?LabVIEW中使用Xerces 2.7解析器處理XML文檔,它須要使用到XML DOMDocument Object Model,文檔對象模型),該對象模型主要是定義了一套訪問和操做XML文檔的標準方法。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

22 XML Parse函數選板

本文將使用LabVIEW中的解析器解析 17所示的XML文件,如 23所示(下載)。本例但願讀取全部的AC Source儀器配置信息,首先使用Load.vi函數打開XML文件,獲得DOM Document指針;而後,使用Get First Matched Node.vi函數搜索XML文件中的ACSource元素,並獲得該節點的指針;使用ChildNodesArray獲取ACSource元素下全部的一級子元素,即instrument元素列表;而後依次獲取Instrument元素中的各個子元素的文本值;最後,使用Close.vi關閉打開的節點。從圖中能夠看出,當ACSource元素中增長了新的儀器時,該讀取VI不須要任何修改,很是易於擴展。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

23 解析XML文件

須要說明的是,Get First Matched Node.vi函數XPath expression參數表示經過XPath語法定義的表達式,目前LabVIEW支持World Wide Web Consortium (W3C)制定的XPath 1.0。關於XPath的相關知識,能夠參見W3C的網站W3school網站。經過XPath語法,程序員能夠很是方便地獲取某個具體的元素節點。 24使用XPath表達式直接獲取了XML文件中DMM元素下第1個儀器的地址值。

LabVIEW數據記錄和存儲(四)—XML文件 - statemice - Change, We Need!

24 使用XPath表達式獲取address元素值

事實上,XML自己就是一門內涵豐富的語言,程序員可使用它存儲和傳輸具備複雜結構的數據。雖然XML在不少方面都優於ini文件,可是ini文件因爲其便捷的操做性仍然被大量用於應用程序的配置應用中。

相關文章
相關標籤/搜索