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 metodou CreateObject přes Microsoft.XMLDOM.

Příklad na vytvoření (zápis) XML souboru zde není. Lze to také provést metodami 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 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ýsledek zpracování XML dokumentu zobrazí v Debug_info.
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, i, lastNode, oAttr;

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

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

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 = 0; i <= lastNode; i++)
{
Pm.Debug(i + " tag name = " + arrNodes.item(i).childNodes(0).text);
Pm.Debug(i + " tag value = " + arrNodes.item(i).childNodes(1).text);
}
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 metodou Debug vypíše název a hodnotu atributu.
JavaScriptVBScriptVyber a zkopíruj do schránky

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 = 0; i <= lastNode; i++)
{
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
}
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 tágu <name> v XML dokumentu.
JavaScriptVBScriptVyber a zkopíruj do schránky

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

for (i = 0; i <= lastNode; i++)
Pm.Debug(arrNodes.item(i).getAttribute("ID"));

Historie:
Pm7.01.01: Vytvořeno
Navigace:
 
- XML
 
- Jak číst v aplikaci obecné XML soubory
 
 
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice