Promotic

W jaki sposób 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ą kluczowych słów).
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, arrNodes, i, lastNode, oAttr;

oXml = Pm.AxGetObject("new", "Microsoft.XMLDOM");
oXml.async = false;   // Wymóc synchroniczny odczyt pliku
b = oXml.load("C:\\XmlData.xml");   // Podłą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 podłą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

arrNodes = oXml.selectNodes("//pm/data/item");   // tablica wymaganych tagów
lastNode = arrNodes.length -1;   // całkowita ilość tagów

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

arrNodes = oXml.getElementsByTagName("item");   // tablica wymaganych tagów
lastNode = arrNodes.length -1;   // całkowita ilość tagów

// zapis wszystkich wartości tablicy "arrNodes"
for (i = 0; i <= lastNode; i++)
{
Pm.Debug(i + " TagName=" + arrNodes.item(i).childNodes(0).text);
Pm.Debug(i + " TagValue=" + arrNodes.item(i).childNodes(1).text);
}
2. Przykład:
Przykład wczyta 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

arrNodes = oXml.selectNodes("//pm/data/item/name");   // tablica wymaganych tagów
lastNode = arrNodes.length -1;   // całkowita ilość tagów

// zapis wszystkich wartości tablicy "arrNodes"
for (i = 0; i <= lastNode; i++)
{
oAttr = arrNodes.item(i).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

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

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