X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FXML.php;h=e8eb4233b1a8a3040da04da6b68cb02c7aaadc50;hb=720a43461d67ab229de0aecfc5008f22cc4c1c54;hp=9aba38910d6a7a0020e743d8f95ba30ec24690b2;hpb=d09b3f5bdeae444f785f6283e55dbf2f61caadac;p=friendica.git diff --git a/src/Util/XML.php b/src/Util/XML.php index 9aba38910d..e8eb4233b1 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; @@ -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 *