Promotic

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 metodou CreateObject přes Microsoft.XMLDOM.
Příklad na vytvoření (zápis) XML souboru zde není. Lze to také provést pomocí metod objektu Microsoft.XMLDOM ale v mnoha případech je daleko jednodušší vytvářet XML soubor jako textový soubor metodou Pm.FileTextWrite (celý XML text se nejprve 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řte vzorový soubor s názvem "XmlData.xml" s tímto obsahem:
<?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) vyberte "Uložit jako" a zde změňte kódování na UTF-8.


Skripty uvedené v následujících příkladech zakomponujte do PROMOTIC aplikace.
Po spuštění aplikace a provedení skriptu se výsledek zpracování XML dokumentu zobrazí v položce Debug INFO systému.
Společná část skriptu:
Toto je společná část skriptu platná pro všechny příklady
JavaScriptVBScriptVyber a zkopíruj do schránky

var oXml, b, arrNodes, iItm, lastNode, oAttr;

oXml = Pm.AxGetObject("new", "Microsoft.XMLDOM");
oXml.async = false;   // Vynutit synchronní načtení souboru
b = oXml.load("C:\\\\XmlData.xml");   // Připojení/načtení XML souboru
// Pm.Debug("XMLDOM = " + b); // Ověření vytvoření 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
// Pm.MessageBox("xml text", oXml.xml, 0); // Zobrazí obsah stránky
1. Příklad:
Příklad přeč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 metodou Debug vypíše texty obsahující tagy <name> a <value>
JavaScriptVBScriptVyber a zkopíruj do schránky

var iItm;
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 (iItm = 0; iItm <= lastNode; iItm++)
{
Pm.Debug(iItm + " TagName=" + arrNodes.item(iItm).selectSingleNode("name").text);
Pm.Debug(iItm + " TagValue=" + arrNodes.item(iItm).selectSingleNode("value").text);
}
Také lze použít tento zápis:
JavaScriptVBScriptVyber a zkopíruj do schránky

var iItm;
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 (iItm = 0; iItm <= lastNode; iItm++)
{
Pm.Debug(iItm + " TagName=" + arrNodes.item(iItm).childNodes(0).text);
Pm.Debug(iItm + " TagValue=" + arrNodes.item(iItm).childNodes(1).text);
}
2. Příklad:
Příklad přeč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 metodou Debug vypíše název a hodnotu atributu.
JavaScriptVBScriptVyber a zkopíruj do schránky

var iItm;
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 (iItm = 0; iItm <= lastNode; iItm++)
{
oAttr = arrNodes.item(iItm).attributes.item(0);   // Objekt oAttr obsahuje všechny atributy tagu <name>
Pm.Debug(oAttr.baseName);   // název atributu
Pm.Debug(oAttr.nodeValue);   // hodnota atributu
}
3. Příklad:
Příklad najde první výskyt tagu <name> v XML dokumentu, který má atribut ID="P" a metodou Debug vypíše textovou hodnotu tagu.
JavaScriptVBScriptVyber a zkopíruj do schránky

// Hodnota prvního tagu <name>, který má atribut ID="P"
var oNode = oXml.selectSingleNode("//pm/data/item/name[@ID='P']");
Pm.Debug(oNode.text);
4. Příklad:
Vypíše hodnotu atributu ID každého tagu <name> v XML dokumentu.
JavaScriptVBScriptVyber a zkopíruj do schránky

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

for (iItm = 0; iItm <= lastNode; iItm++)
{
Pm.Debug(arrNodes.item(iItm).getAttribute("ID"));
}
Navigace:
 
- XML
 
- Jak číst v aplikaci obecné XML soubory
 
 
© MICROSYS, spol. s r.o.