Jak číst XML pomocí PHP

Zde je stručný návod jak hodnoty z různých našich zařízení číst ve formátu XML a vložit je do stránek psaných v jazyce PHP. To může být základ pro to, abyste mohli své stránky obohatit o údaje ze zařízení, která máte od nás. V tomto článku je příklad jak pomocí XML a PHP zobrazovat údaje z I/O modulu Quido.

Proč umět číst XML pomocí PHP?

Tento stručný návod může být základem k tomu jak:

  • ...vytvořit stránku s Vaší vlastní grafikou s naměřenými hodnotami a dalšími údaji z našich zařízení, které máte.
  • ...vytvořit stránku, která shromažďuje údaje z více zařízení nebo s nimi provádí nějaké operace.
  • ...napsat skript, který bude pomocí PHP číst údaje z XML na jiném serveru.

Co je potřeba?

  • Počítač nebo server s PHP skriptováním
  • Základní znalost skriptování PHP a HTML

Čtení XML pomocí PHP a XMLReader

Následující skript přečte všechny aktuální stavu vstupů a výstupů z I/O modulu Quido, zapojeného v místní síti a s IP adresou 192.168.1.254. Skript se připojí ke Quidu, přečte si aktuální údaje ze souboru ve formátu XML a zobrazí u každého vstupu a výstupu jeho jméno, pořadové číslo a stav.

Skript slouží k porozumění způsobu jak tyto údaje z Quida získat. Skript ke čtení používá XMLReader.

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Přehled všech aktuálních stavů I/O na Quidu</title>
	</head>
	<body>
<?php

$reader = new XMLReader();

//Kompletní adresa vedoucí ke XML v Quidu
$reader->open("http://192.168.1.254/fresh.xml");

echo "<h1>Přehled všech aktuálních stavů I/O na Quidu</h1>";

while ($reader->read()) {
	
	// Jména, čísla a stavy všech vstupů
		if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "din")
		echo "<p><b>" . $reader->getAttribute('name') . "</b> (IN " . $reader->getAttribute('id') . "): " . $reader->getAttribute('val') . "</p>";

	// Jména, čísla a stavy všech výstupů
		if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "dout")
		echo "<p><b>" . $reader->getAttribute('name') . "</b> (OUT " . $reader->getAttribute('id') . "): " . $reader->getAttribute('val') . "</p>";

};

?>
	</body>
</html>

Výstupem výše uvedeného PHP skriptu je tento výpis:

XmlReader - výstup skriptu

Čtení XML pomocí PHP a XPath

Tento skript ke čtení používá přístup pomocí XPath. Skript obsahuje id konkrétních vstupů na I/O modulu Quido, které uživatel chce číst. Tento způsob se hodí v případě, že na dané stránce chcete získat jen některé konkrétní informace z Quida. Naspříklad jen jména a stavu dvou vstupů z celého Quida.

Skript slouží k porozumění způsobu jak tyto údaje z Quida získat. Skript ke čtení používá DOMXpath.

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Stav vybraných I/O na Quidu</title>
	</head>
	<body>
	
<?php

	$doc = new DomDocument();
	
	//Kompletní adresa vedoucí ke XML v Quidu
	$doc->load("http://192.168.1.254/fresh.xml");
	$doc->preserveWhiteSpace = false;
	
	$xpath = new DOMXpath($doc);
    $xpath->registerNamespace('x','http://www.papouch.com/xml/quido/act');
	
	echo "<h1>Stav vybraných I/O na Quidu</h1>";
	
	//V následujících řádcích se získává stav vstupů ("din") číslo ("id") 2 a 4
	echo "<p>Vstup <b>" . $xpath->evaluate("string(//x:din[@id='2']/@name)") . "</b> má hodnotu " . $xpath->evaluate("string(//x:din[@id='2']/@val)") . "</p>";
	echo "<p>Vstup <b>" . $xpath->evaluate("string(//x:din[@id='4']/@name)") . "</b> má hodnotu " . $xpath->evaluate("string(//x:din[@id='4']/@val)") . "</p>";

?>
	
	</body>
</html>

Výstupem PHP skriptu, který čte XML je tento stručný výpis.

XPath - výstup skriptu

Příklad XML souboru

Následující XML soubor je příkladem souboru fresh.xml z I/O modulu Quido ETH 4/4. Tento soubor slouží jako příklad pro čtení pomocí skriptů uvedených výše.

<?xml version="1.0" encoding="ISO-8859-1"?>
<root xmlns="http://www.papouch.com/xml/quido/act">
	<din id="1" name="Hall light" sts="0" val="0" pic="12" cmo="0" cnt="0" />
	<din id="2" name="South Gate" sts="0" val="1" pic="17" cmo="0" cnt="0" />
	<din id="3" name="Boxes counter" sts="0" val="0" pic="1" cmo="1" cnt="274" />
	<din id="4" name="No name" sts="0" val="1" pic="3" cmo="3" cnt="28" />
	<dout id="1" name="Klapka" sts="0" val="0" pic="7" mde="0" pars="" />
	<dout id="2" name="Osvetleni haly" sts="0" val="1" pic="12" mde="0" pars="1;0;300;351;5" />
	<dout id="3" name="Brana" sts="0" val="0" pic="10" mde="1" pars="0;0;0;0;5" />
	<dout id="4" name="Chlazeni" sts="0" val="0" pic="16" mde="4" pars="2;0;405;452;6" />
	<temp id="1" sts="0" val="   12,6" th="    30" tl="   -10" tenb="1" />
	<status location="Storage C" unit="C" />
</root>

Z jakých zařízení je možné XML pomocí PHP číst?

Výše uvedené příklady lze po mírné úpravě použít také pro čtení teploty z TME nebo TME multi, teploty, vlhkosti a rosného bodu z TH2E, analogových hodnot z AD4ETH nebo rychlosti a směru větru z TX20ETH. Použitý způsob je univerzální, takže se dá snadno upravit pro jakékoli naše zařízení, které poskytuje hodnoty ve formátu XML. V dokumentacích u našich zařízeních naleznete popisy parametrů a hodnot, které je možné z našich zařízení v XML získat. Na Vašem webu pak můžete plně využít potenciál údajů, které naše zařízení ve formátu XML poskytují.

Pokud máte nějaký námět na vylepšení výše uvedených skriptů nebo k nim máte jakýkoli dotaz, můžete se na nás obrátit například prostřednictvím níže uvedeného formuláře.

Obrázky


Mutace obrazků;
Vytvořeno29. 9. 2014
Jak číst XML pomocí PHP
Jak číst XML pomocí PHP