Update cookies preferences
Promotic

Jak odczytywać w aplikacji ogólne pliki XML

Przykłady te opisują, w jaki sposób można z aplikacji PROMOTIC odczytać konkretne wartości lub parametry z pliku XML przy pomocy metody CreateObject poprzez Microsoft.XMLDOM.
Przykład na wytworzenie (zapis) pliku XML tutaj brak. Można to wykonać przy pomocy metod obiektu Microsoft.XMLDOM ale w wielu przypadkach jest dalece prostszym wytwarzanie pliku XML jako plik tekstowy przy pomocy metody Pm.FileTextWrite (cały tekst XML zostanie najpierw wytworzony w zmiennej typu String) lub Pm.FileTextReplace (przykład pliku XML zostanie tylko przepisany wraz ze zmianą słów kluczowych).
XmlData:
Wytwórz przykładowy plik o nazwie "XmlData.xml" o takiej zawartości:
<?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>
Plik tekstowy XML zapisz na przykład na C:\XmlData.xml.
Nie zapomnij zapisać plik w formacie Unicode UTF-8. Na przykład w oprogramowaniu Notepad (notatnik) wybierz "Zapisz jako" oraz tutaj zmień kodowanie na UTF-8.


Skrypty zamieszczone w następujących przyładach zakomponuj do aplikacji PROMOTIC.
Po uruchomieniu aplikacji oraz wykonaniu skryptu wynik opracowania dokumentu XML zostanie wyświetlony w pozycji Debug INFO systemu.
Wspólna część skryptu:
To jest wspólna część skryptu ważna we wszystkich przykładach
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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

oXml = Pm.AxGetObject("new", "Microsoft.XMLDOM");
oXml.async = false;   // Wymóc synchroniczny odczyt pliku
b = oXml.load("C:\\XmlData.xml");   // Połączenie/odczyt pliku XML
// Pm.Debug("XMLDOM = " + b); // Sprawdzenie wytworzenia ActiveX obiektu
// Pm.Debug(oXml, true); // Wyświetli dostępne metody
// Pm.Debug(oXml.readyState); // Wyświetli stan połączenia: 0=uninitialized, 1=loading, 2=loaded, 3=interactive, 4=complete
// Pm.MessageBox("xml text", oXml.xml, 0); // Wyświetli zawartość strony
1. Przykład:
Przykład odczyta tablicę wszystkich tagów, które są wżłobione do struktury pm/data/item dokumentu XML. Następnie w pętli przechodzi wszystkie tagi <item>, z których do INFO systemu przy pomocy metody Debug wypisze teksty zawierające tagi <name> oraz <value>
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var iItm;
aNodes = oXml.selectNodes("//pm/data/item");   // Tablica wymaganych tagów
lastNode = aNodes.length - 1;   // Całkowita ilość tagów

// Zapis wszystkich wartości tablicy "aNodes"
for (iItm = 0; iItm <= lastNode; iItm++)
{
Pm.Debug(iItm + " TagName=" + aNodes.item(iItm).selectSingleNode("name").text);
Pm.Debug(iItm + " TagValue=" + aNodes.item(iItm).selectSingleNode("value").text);
}
Równiaż można zastosować taki zapis:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var iItm;
aNodes = oXml.getElementsByTagName("item");   // Tablica wymaganych tagów
lastNode = aNodes.length - 1;   // Całkowita ilość tagów

// Zapis wszystkich wartości tablicy "aNodes"
for (iItm = 0; iItm <= lastNode; iItm++)
{
Pm.Debug(iItm + " TagName=" + aNodes.item(iItm).childNodes(0).text);
Pm.Debug(iItm + " TagValue=" + aNodes.item(iItm).childNodes(1).text);
}
2. Przykład:
Przykład odczyta tablicę wszystkich tagów, które są wżłobione do struktury pm/data/item/name dokumentu XML. Następnie w pętli przechodzi wszystkie tagi <name> z których do INFO systemu przy pomocy metody Debug wypisze nazwę oraz wartość atrybutu.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var iItm;
aNodes = oXml.selectNodes("//pm/data/item/name");   // Tablica wymaganych tagów
lastNode = aNodes.length - 1;   // Całkowita ilość tagów

// Zapis wszystkich wartości tablicy "aNodes"
for (iItm = 0; iItm <= lastNode; iItm++)
{
oAttr = aNodes.item(iItm).attributes.item(0);   // Obiekt oAttr zawiera wszystkie atrybuty tagu <name>
Pm.Debug(oAttr.baseName);   // nazwa atrybutu
Pm.Debug(oAttr.nodeValue);   // wartość atrybutu
}
3. Przykład:
Przykład odnadzie pierwszą obecność tagu <name> w dokumencie XML, który posiada atrybut ID="P" i przy pomocy metody Debug wypisze wartość tekstową tagu.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

// Wartość pierwszego tagu <name>, który posiada atrybut ID="P"
var oNode = oXml.selectSingleNode("//pm/data/item/name[@ID='P']");
Pm.Debug(oNode.text);
4. Przykład:
Wypisze wartość atrybutu ID każdego tagu <name> w dokumencie XML
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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

for (iItm = 0; iItm <= lastNode; iItm++)
{
Pm.Debug(aNodes.item(iItm).getAttribute("ID"));
}
Nawigacja:
 
- XML
 
- Jak odczytywać w aplikacji ogólne pliki XML
 
 
© MICROSYS, spol. s r.o.