Das <Success />
Element ist ein empty element, was bedeutet, es hat keinen Wert. Es ist beides, Start- und End-Tag.
Sie können test for existence of nodes with the XPath function boolean()
Die Boolesche Funktion wandelt in einen boolean ihr Argument wie folgt:
- eine Zahl wahr ist, wenn und nur wenn sie weder positiv oder negativ Null noch NaN ist
- ein Node-Set ist wahr, wenn und nur wenn es nicht leer ist
- ein String ist wahr, wenn und nur wenn seine Länge nicht Null ist
- ein Objekt von einem anderen Typ als die vier Grundtypen in einer Art und Weise in einen Booleschen umgewandelt, die auf diesem Typ abhängig ist
Um das zu tun mit DOMXPath
Sie die DOMXPath::evaluate()
Methode verwenden müssen, weil es wird eine typisierte Ergebnis, in diesem Fall das Rück ein boolean
:
$xml = <<< XML
<OTA_PingRS>
<Success />
<EchoData>This is some test data</EchoData>
</OTA_PingRS>
XML;
$dom = new DOMDocument;
$dom->loadXml($xml);
$xpath = new DOMXPath($dom);
$successNodeExists = $xpath->evaluate('boolean(/OTA_PingRS/Success)');
var_dump($successNodeExists); // true
demo
Natürlich können Sie auch für /OTA_PingRS/Success
abfragen einfach und sehen, ob es Ergebnisse in der zurück DOMNodeList
:
$xml = <<< XML
<OTA_PingRS>
<Success />
<EchoData>This is some test data</EchoData>
</OTA_PingRS>
XML;
$dom = new DOMDocument;
$dom->loadXml($xml);
$xpath = new DOMXPath($dom);
$successNodeList = $xpath->evaluate('/OTA_PingRS/Success');
var_dump($successNodeList->length);
demo
Sie können auch SimpleXML verwenden:
$xml = <<< XML
<OTA_PingRS>
<Success />
<EchoData>This is some test data</EchoData>
</OTA_PingRS>
XML;
$nodeCount = count(simplexml_load_string($xml)->xpath('/OTA_PingRS/Success'));
var_dump($nodeCount); // 1
Der normale Weg, was hast du versucht? – Musa