Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Jak číst v aplikaci obecné XML soubory

Tyto příklady popisují jak lze z aplikace PROMOTIC načíst konkrétní hodnoty nebo parametry z XML souboru pomocí metody CreateObject přes Microsoft.XMLDOM.

Příklad na vytvoření (zápis) XML souboru zde není. Lze to také provést metodami nad objektem Microsoft.XMLDOM ale v mnoha případech je daleko jednodušší vytvářet XML soubor jako textový soubor pomocí metody Pm.FileTextWrite (celý XML text se nejdřív vytvoří v proměnné typu String) nebo Pm.FileTextReplace (vzor XML souboru se pouze přepíše se záměnou klíčových slov).

XmlData:
Vytvoříme vzorový soubor s názvem XmlData.xml tohoto obsahu:
<?xml version="1.0" encoding="utf-8"?>
<pm>
  <data>
    <item>
      <name ID="B">d0</name>
      <value>9.381083</value>
    </item>
    <item>
      <name ID="P">d1</name>
      <value>20.34651</value>
    </item>
    <item>
      <name ID="K">d2</name>
      <value>31.1635</value>
    </item>
    <item>
      <name ID="P">d3</name>
      <value>39.94775</value>
    </item>
    <item>
      <name ID="D">d4</name>
      <value>48.76433</value>
    </item>
  </data>
</pm>
Textový XML soubor uložte například na C:\XmlData.xml. Nezapoměňte soubor uložit ve formátu Unicode UTF-8. Například v programu Notepad (poznámkový blok) zvolte "Uložit jako" a zde změňte kódování na UTF-8.
 
Skripty uvedené v následujících příkladech zakomponujte do aplikace PROMOTIC. Po spuštění aplikace a provedení skriptu se výsledky zpracování XML dokumentu zobrazí v Debug_info.
Společná část skriptu:
Toto je společná část skriptu platná pro všechny příklady
VBScriptVyber a zkopíruj do schránky

Dim oXml, b, arrNodes, i, lastNode, oAttr

Set oXml = CreateObject("Microsoft.XMLDOM")
oXml.async = false  'vynutit synchroní načtení souboru
b = oXml.load("c:\XmlData.xml")  'připojení/načtení XML souboru
'Pm.Debug "ActiveX = " & b ' ověření vytvořeni ActiveX objektu
'Pm.Debug oXml, true ' zobrazí použitelné metody
'Pm.Debug oXml.readyState ' zobrazí stav připojení: 0=uninitialized, 1=loading, 2=loaded, 3=interactive, 4=complete
'MsgBox oXml.xml ' zobrazí obsah stránky
1. Příklad:
Příklad načte pole všech tagů, které jsou vnořeny do struktury pm/data/item XML dokumentu. Následně se ve smyčce prochází všemi tagy <item>, ze kterých do INFO systému pomocí metody Debug vypíše texty obsahující tagy <name> a <value>
VBScriptVyber a zkopíruj do schránky

Set arrNodes = oXml.selectNodes("//pm/data/item")  'pole požadovaných tagů
lastNode = arrNodes.length -1  'celkový počet tagů

'zápis všech hodnot pole "arrNodes"
For i = i To lastNode
  Pm.Debug i & " tag name = " & arrNodes.Item(i).selectSingleNode("name").Text
  Pm.Debug i & " tag value = " & arrNodes.Item(i).selectSingleNode("value").Text
Next
 
také lze použít tento zápis
 
VBScriptVyber a zkopíruj do schránky

Set arrNodes = oXml.getElementsByTagName("item")  'pole požadovaných tagů
lastNode = arrNodes.length -1  'celkový počet tagů

'zápis všech hodnot pole "arrNodes"
For i = i To lastNode
  Pm.Debug i & " tag name = " & arrNodes.Item(i).childNodes(0).Text
  Pm.Debug i & " tag value = " & arrNodes.Item(i).childNodes(1).Text
Next
2. Příklad:
Příklad načte pole všech tagů, které jsou vnořeny do struktury pm/data/item/name XML dokumentu. Následně se ve smyčce prochází všemi tagy <name> ze kterých do INFO systému pomocí metody Debug vypíše název a hodnotu atributu.
VBScriptVyber a zkopíruj do schránky

Set arrNodes = oXml.selectNodes("//pm/data/item/name")  'pole požadovaných tagů
lastNode = arrNodes.length -1  'celkový počet tagů

'zápis všech hodnot pole "arrNodes"
For i = i To lastNode
  Set oAttr = arrNodes.Item(i).Attributes.Item(0)  'objekt oAttr obsahuje všechny atributy tagu "name"
  Pm.Debug oAttr.baseName  'název atributu
  Pm.Debug oAttr.nodeValue  'hodnota atributu
Next
3. Příklad:
Příklad najde první výskyt tagu <name> v XML dokumentu, který má atribut ID="P". Pomocí metody Debug vypíše textovou hodnotu tagu.
VBScriptVyber a zkopíruj do schránky

'hodnota prvního tagu "name", který má atribut ID="P"
Dim oNode
Set oNode = oXml.selectSingleNode("//pm/data/item/name[@ID='P']")
Pm.Debug oNode.Text
4. Příklad:
Pomocí metody Debug vypíše hodnotu atributu ID každého tágu <name> v XML dokumentu.
VBScriptVyber a zkopíruj do schránky

Set arrNodes = oXml.getElementsByTagName("name")
lastNode = arrNodes.length -1

For i = i To lastNode
  Pm.Debug arrNodes.Item(i).getAttribute("ID")
Next
Navigace:
 
- XML
 
- Jak číst v aplikaci obecné XML soubory
 
 
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice