X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FXML.php;h=e06a92d25edf9a5a3d73951431064eaafb1f29c4;hb=ee32459358c6ca818f368e55e49147e4dcdcc690;hp=c866475c1b40d69e1c057de9e739e6c1e9c3e17f;hpb=39ff6e9ce9251fe69b56ba05ea7bdc1896f34de2;p=friendica.git diff --git a/src/Util/XML.php b/src/Util/XML.php index c866475c1b..e06a92d25e 100644 --- a/src/Util/XML.php +++ b/src/Util/XML.php @@ -52,6 +52,7 @@ class XML } } + $element = null; foreach ($array as $key => $value) { if (!isset($element) && isset($xml)) { $element = $xml; @@ -185,12 +186,13 @@ class XML return(null); } + $xml_element_copy = ''; if (!is_string($xml_element) && !is_array($xml_element) && (get_class($xml_element) == 'SimpleXMLElement') ) { - $xml_element_copy = $xml_element; - $xml_element = get_object_vars($xml_element); + $xml_element_copy = $xml_element; + $xml_element = get_object_vars($xml_element); } if (is_array($xml_element)) { @@ -413,4 +415,50 @@ class XML $child->parentNode->removeChild($child); } } + + public static function parseString($s, $strict = true) + { + // the "strict" parameter is deactivated + libxml_use_internal_errors(true); + + $x = @simplexml_load_string($s); + if (!$x) { + logger('libxml: parse: error: ' . $s, LOGGER_DATA); + foreach (libxml_get_errors() as $err) { + logger('libxml: parse: ' . $err->code." at ".$err->line.":".$err->column." : ".$err->message, LOGGER_DATA); + } + libxml_clear_errors(); + } + return $x; + } + + public static function getFirstNodeValue($xpath, $element, $context = null) + { + $result = $xpath->evaluate($element, $context); + if (!is_object($result)) { + return ''; + } + + $first_item = $result->item(0); + if (!is_object($first_item)) { + return ''; + } + + return $first_item->nodeValue; + } + + public static function getFirstAttributes($xpath, $element, $context = null) + { + $result = $xpath->query($element, $context); + if (!is_object($result)) { + return false; + } + + $first_item = $result->item(0); + if (!is_object($first_item)) { + return false; + } + + return $first_item->attributes; + } }