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 jest wytworzony najpierw w zmiennej typu
String) lub
Pm.FileTextReplace (szablon 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
Dim oXml, b, aNodes, iItm, lastNode, oAttr
Set oXml = CreateObject("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, &H0 ' 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);
}
Dim iItm
Set 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 To lastNode
Pm.Debug(iItm & " TagName=" & aNodes.item(iItm).selectSingleNode("name").text)
Pm.Debug iItm & " TagValue=" & aNodes.item(iItm).selectSingleNode("value").text
Next
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);
}
Dim iItm
Set 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 To lastNode
Pm.Debug(iItm & " TagName=" & aNodes.item(iItm).childNodes(0).text)
Pm.Debug iItm & " TagValue=" & aNodes.item(iItm).childNodes(1).text
Next
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
}
Dim iItm
Set 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 To lastNode
Set 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
Next
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);
' Wartość pierwszego tagu <name>, który posiada atrybut ID="P"
Dim oNode
Set 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"));
}
Set aNodes = oXml.getElementsByTagName("name")
lastNode = aNodes.length - 1
For iItm = 0 To lastNode
Pm.Debug aNodes.item(iItm).getAttribute("ID")
Next