X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FXML.php;h=963161fbffb2add74f70d8874380a795800e6a1e;hb=8dc0ab9bb3379fec0be442160db1ae29ef8cea9d;hp=9aba38910d6a7a0020e743d8f95ba30ec24690b2;hpb=0e05ff68686270d87447c570e28543a5bcc7e755;p=friendica.git diff --git a/src/Util/XML.php b/src/Util/XML.php index 9aba38910d..963161fbff 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -1,6 +1,6 @@ code . " at " . $err->line . ":" . $err->column . " : " . $err->message, Logger::DATA); + Logger::debug('libxml: parse: ' . $err->code . " at " . $err->line . ":" . $err->column . " : " . $err->message); } libxml_clear_errors(); return; @@ -433,18 +433,26 @@ class XML } } - public static function parseString($s, $strict = true) + /** + * Parse XML string + * + * @param string $s + * @param boolean $suppress_log + * @return Object + */ + public static function parseString(string $s, bool $suppress_log = false) { - // the "strict" parameter is deactivated libxml_use_internal_errors(true); $x = @simplexml_load_string($s); if (!$x) { - Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]); - foreach (libxml_get_errors() as $err) { - Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]); + if (!$suppress_log) { + Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]); + foreach (libxml_get_errors() as $err) { + Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]); + } + Logger::debug('Erroring XML string', ['xml' => $s]); } - Logger::debug('Erroring XML string', ['xml' => $s]); libxml_clear_errors(); } return $x; @@ -467,7 +475,7 @@ class XML public static function getFirstAttributes(DOMXPath $xpath, $element, $context = null) { - $result = $xpath->query($element, $context); + $result = @$xpath->query($element, $context); if (!is_object($result)) { return false; } @@ -480,6 +488,21 @@ class XML return $first_item->attributes; } + public static function getFirstValue($xpath, $search, $context) + { + $result = @$xpath->query($search, $context); + if (!is_object($result)) { + return ''; + } + + $first_item = $result->item(0); + if (!is_object($first_item)) { + return ''; + } + + return $first_item->nodeValue; + } + /** * escape text ($str) for XML transport *